...
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).
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.).
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).
...