Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Kontejner je standardna jedinica softvera koja pakira kod i sve njegove ovisnosti tako da se aplikacija može brzo i pouzdano pokretati u različitim okruženjima. Oni "sjede" na fizičkom serveru i njegovom operacijskom sustavu i s njim dijele kernel. Slični su virtualnim strojevima (eng. virtual machines) utoliko što su također virtualizirani sustavi. Međutim, za razliku od virtualnih strojeva koji sadrže cijele operacijske sustave i sve ovisnosti koje im trebaju za izvršavanje zadanih operacija (te su zbog toga zahtjevne za resurse), kontejeri s hostom dijele kernel, te u sebi sadržavaju samo aplikacije, njihove ovisnosti i potrebne biblioteke (eng. library).


Razlika između virtualnih strojeva i kontejnera.Image Modified

Slika 1: Hipervizor sjedi na fizičkom stroju i omogućuje kreiranje virtualnih strojeva. Svaki virtualni stroj ima svoj operacijski sustav, i zauzima određene resurse potrebne za pokretanje odvojenih OS-a. S druge strane, kontejneri su povezani s operacijskim sustavom fizičkog računala te dijele njegov kernel i odvojene su samo aplikacije i njihove ovisnosti. Zbog toga kontejneri troše značajno manje resursa od virtualnih strojeva.

...

Izgradnja kontejnera iz Singularity recepta se preporuča, budući da je tako osigurana reproducibilnost (svi koraci izgradnje kontejnera su sadržani u Singularity receptu koji je vidljiv u kontejneru). Singularity recept se sastoji od dva glavna dijela: zaglavlje (eng. header) i sekcija (eng. sections). Zaglavlje je obvezan dio recepta, dok su sekcije opcionalne. U zaglavlju se definira bazni OS koji se želi instalirati u kontejneru, a u sekcijama se navode svi ostali koraci koje želimo iskoristiti prilikom izgradnje kontejnera (npr. kopirati datoteke, instalirati softver, kreirati varijable okoline i sl.).

Shematski prikaz procesa izgradnje kontejnera. Image Modified

Slika 2: Shematski prikaz procesa izgradnje kontejnera. Zelenim strelicama su označene akcije koje se mogu izvoditi bez sudo ovlasti, za akcije označene crvenim strelicama potrebno je imati sudo ovlasti.

...

Više informacija o Singularity receptima dostupno je u Singularity korisničkim uputama.

Sections

%help

Tekst koji se prikazuje kad se pozove singularity help.

%setup

Naredbe u ovoj sekciji se izvršavaju na host sustavu nakon što se bazni sustav instalira u kontejneru.

%files

U ovoj sekciji se kopiraju datoteke s host sustava u kontejner. Svaka linija je kombinacija izvor destinacija.

%labels

Ovdje se spremaju metapodaci vezani za kontejner.

%environment

Ovdje se dodaju varijable okoline. Treba imati na umu da se varijable u ovoj sekciji kreiraju tijekom runtime-a, tako da u slučaju da su potrebne tijekom procesa izgradnje kontejnera, treba ih također staviti u %post sekciju kao u primjeru:

Code Block
%post

    echo 'export TEST_VAR=test' >> $SINGULARITY_ENVIRONMENT

%post

Naredbe u ovoj sekciji se izvršavaju unutar kontejnera nakon što je bazni operacijski sustav instaliran. Tu se radi kreiranje direktorija, instaliranje softvera i biblioteka. U ovoj sekciji se ne mogu kopirati datoteke, ali se mogu downloadati s naredbama git clone, wget ili curl.

%runscript

Ne izvršava se tijekom izgradnje kontejnera, nego ostaje unutar kontejnera te se izvršava kad se kontejner pokrene (naredbom singularity run ili direktno kao izvršna datoteka).

...