Vsebniki Apptainer
Uvod
Danes so najbolj razširjeni vsebniki Docker, ki jih je že leta 2013 razvilo podjetje DotCloud. Že od samega začetka ponujajo format za zapis receptov za gradnjo vsebnikov in format za zapis slik vsebnikov. Uporabnikom je na voljo spletni portal dockerhub, na katerega lahko objavljamo recepte. Tako lahko danes vsak zgradi vsebnik, ki ga lahko kdorkoli z nekaj enostavnimi ukazi zažene na svojem računalniku. Vsebniki Docker predstavljajo industrijski standard za virtualizacijo operacijskega sistema. Na voljo je kopica orodij za orkestracijo vsebnikov Docker, mnogi upravljalci oblačnih storitev omogočajo integracijo v svoje sisteme. Z učinkovitim upravljanjem vsebnikov strankam zagotavljajo raztegljivost programske opreme, običajno zgrajene iz množice mikrostoritev, ki se izvajajo v vsebnikih. Vsebniki Docker pa imajo nekaj lastnosti, zaradi katerih niso najprimernejši za uporabo v superračunalniških okoljih. Med drugim nadzornik vsebnikov teče kot servis, ki za zagon vsebnika in mnoge operacije z njimi zahteva več pravic, kot jih imajo običajni uporabniki.
Zaradi lastnosti, ki omejujejo praktično uporabnost vsebnikov Docker v superračunalniškem okolju, je leta 2016 Lawrence Berkley National Laboratory začel odprtokodni projekt razvoja ogrodja za delo z vsebniki, prilagojenega za superračunalniške sisteme. Danes za razvoj ogrodja in vsebnikov Singularity skrbi podjetje Sylabs, ki vzdržuje tudi prosto dostopno različico Community Edition. Leta 2021 se je projekt Singularity ločil na dva dela. Del je ostal pod okriljem podjetja Sylabs, Drug del pa je padel pod okrile Fundacije Linux in se naprej razvija pod imenom Apptainer. V nadaljevanju si bomo ogledali delo z ogrodjem Apptainer, ki pa ostaja zelo podobno Singularity. Ogrodje Apptainer je v zasnovi precej podobno ogrodju Docker. Sliko vsebnika Docker je možno zelo enostavno pretvoriti v sliko vsebnika Apptainer.
Prednosti ogrodja Apptainer
Glavne prednosti, zaradi katerih so vsebniki Apptainer priljubljeni v superračunalniškem okolju, so1:
- Vsak vsebnik je shranjen v eni sami datoteki, ki vključuje knjižnice, orodja, uporabniško programsko opremo. Zato vsebnike enostavno prenašamo med računalniškimi sistemi.
- Uporabnik si v vsebnike namesti poljubno programsko opremo po svojih potrebah in željah. Pri delu v vsebniku ogrodje uporablja enostaven varnostni model, ki pravice uporabnika iz gostitelja prenese v vsebnik, v vsebniku pa ne dovoli spreminjanja pravic.
- Ogrodje Apptainer daje prednost integraciji pred izolacijo, s čimer olajša uporabo posebne strojne opreme: grafičnih procesnih enot in drugih pospeševalnikov, nizkolatenčnih širokopasovnih omrežij in dostop do porazdeljenega datotečenga sistema.
- Vsebnike lahko opremimo s kriptografskimi mehanizmi, preko katerih uporabnik lahko preveri izvor vsebnika in se prepriča, da ni bil spremenjen.
Arhitektura
Mnogi nadzorniki vsebnikov, med njimi tudi Docker, tečejo kot servisi z več pravicami, kot jih ima navaden uporabnik. Na ta način lahko učinkovito povezujejo delovne tokove, sestavljene iz množice vsebnikov, in uporabnikom v vsebnikih dajo več pravic, kot jih imajo na gostitelju. Zaradi tega morajo biti tudi močno izolirani od gostitelja. Vsebniki, ki jih nadzira servis, so tako podrejeni servisu, ne pa uporabniški lupini, in so tako zunaj dosega razvrščevalnika poslov na superračunalniku.
V ogrodju Apptainer to težavo razrešujejo tako, da je nadzornik vsebnikov Apptainer Launcher navadna aplikacija, ki jo zaženemo iz uporabniške vrstice in se samodejno zaustavi, ko vsebnik zaključi z izvajanjem. Ker ima uporabnik znotraj vsebnika enake pravice, kot na gostitelju, ima v vsebniku lahko dostop do datotečnega sistema in posebne strojne opreme na gostitelju.
"Primerjava ogrodij za vsebnike")
Delovno okolje
Vsebnike gradimo v razvojnem okolju, kjer moramo imeti skrbniške pravice (root
) ali pa nam mora skrbnik sistema dati dovoljenje za uporabo stikala --fakeroot
pri delu z ogrodjem Apptainer.
Običajno slike vsebnikov pripravljamo kar na osebnem računalniku, kjer imamo dovolj pravic. Za namestitev ogrodja Apptainer sledite navodilom na spletni strani https://apptainer.org/docs/admin/main/installation.html.
Pri pripravi vsebnikov se lahko poslužimo naslednjih možnosti:
- vsebnike lahko gradimo interaktivno v peskovniku ali interaktivno popravljamo obstoječe slike,
- vsebnike lahko gradimo iz v naprej pripravljenih receptov, ali
- jih preprosto potegnemo iz podprtih repozitorijev, kot so Syngularity Cloud Library, docker hub in Nvida NGC.
Pripravljene vsebnike zaganjamo v produkcijskem okolju, kjer običajno nimamo skrbniških pravic. Zaganjamo jih interaktivno ali ne-interaktivno
- iz slike, ki smo jo na sistem prenesli neposredno, ali
- iz slike, na enem od repozitorijev.
-
Sylabs, Apptainer User Guide, 2023. ↩