Skip to content

Vsebniki

Vsebniki predstavljajo individualno enoto z ustreznim naborom programske opreme, vključno z ustreznimi knjižnicami in nastavitvami za učinkovito delovanje v okolju. Tehnologija omogoča zanesljivost, prenosljivost, izolacijo, varnost in zagon programske opreme vsebnikov znotraj ali izven ukazne vrstice. Slednje omogoča, da se programska oprema prilagodi okolju superračunalnika. Posamezne distribucije omogočajo različne pristope in mehanizme, ki zagotavljajo fleksibilnost in konfiguracijo okolja. Gruča Vega že ima platformo za vsebnike Apptainer nameščeno in prilagojeno delu na superračunalnikih (HPC).

Na HPC Vega so vsebniki na voljo na $PATH: /ceph/hpc/software/containers/singularity

Vsebniki Apptainer

Apptainer je platforma, namenjena ustvarjanju in zaganjanju vsebnikov znotraj superračunalniškega okolja. Vsebniki imajo dostop do skupne operacijskega sistema, datotečnega sistema in programske opreme, nameščene na vozliščih. Slednja upošteva privilegije operacijskega sistema (v našem primeru je to RHEL), ki omogoča uporabo in prenos ustreznih pravic sistemskega uporabniškega računa. Če se odločimo za namestitev lastnega vsebnika, lahko namestimo programsko opremo, knjižnice in prilagodimo okolje v njem tako, da ustreza našim potrebam. Zaradi omejene izolacije, ni treba upoštevati ustreznosti, skladnosti okolja, ki ga vzpostavite. Sicer vsebnik ne bo deloval pravilno ali pa sploh ne bo deloval. Apptainer nudi visoko ravne prenosljivosti – Singularity Image Format (SIF) in ponovljivost vsebnikov s pomočjo datotek z definicijo ali opisom (.def/.dsc).

Apptainer (prej Singularity) je odprtokodni fork programa Singularity. Večinoma sta medsebojno zamenljiva, zato lahko svoje delovne tokove v Singularityju enostavno prilagodite, da bodo delovali tudi z Apptainerjem.

Več informacij najdete v uradni dokumentaciji

Ukazi Apptainer

Prenesite predhodno pripravljene vsebnike – prenos vsebnika z ukazom "pull" iz repozitorijev (klnjižnica, docker, sbub itd.):

$ apptainer pull <image-name>.sif <hub>://<image>[:tag]
$ apptainer pull container.sif docker://tensorflow/tensorflow:latest

Za zagon vsebnika:

$ apptainer run container.sif

Za zagon ukaza v lokalnem vsebniku:

$ apptainer exec container.sif <command>

Lupina lokalnega vsebnika:

$ apptainer shell container.sif

Tiskanje podatkov lokalnega vsebnika:

$ apptainer inspect container.sif
$ apptainer inspect --runscript container.sif
$ apptainer inspect --deffile container.sif

Tiskanje razdelka "Pomoč":

$ apptainer run-help container.sif

Dodatne ukaze najdete v razdelku "Pomoč":

$ apptainer help

Lastni vsebnik lahko pripravite na več načinov, lahko tudi tako, da jih združite. Uporabite lahko tudi predhodno pripravljene vsebnike, jih razporedite in jih prilagodite svojim potrebam. Če pa vam to ne ustreza, lahko ustvarite lastni vsebnik s pomočjo datoteke z definicijo. Slednja vam omogoča višjo raven ponovljivosti vsebnika samega (vedno dobite isti rezultat, morate pa biti previdni, da ne uporabite najnovejših oznak).

Predloge so na voljo v različnih repozitorijih za zagon (angl. bootstrap repositories), kot so:

Celotni seznam repozitorijev je na voljo na spletni strani: Navodila za uporabnike

Dodatne funkcionalnosti in uporaba različnih stikal:

Singularity Image Format (SIF) je vsebnik samo za branje, ki omogoča prenosljivost. Če so potrebne spremembe v vsebniku, se lahko pretvori v "sandbox" ali uporabi dodatna funkcionalnost "Persistent Overlays", ki je na voljo s stikalom --overlay.

Več informacij najdete povezavi.

Če je vsebnik pripravljen s stikalom --sandbox, se lahko vsebnik sam ureja neposredno s stikalom --writable. Sistemske direktorije lahko vpnete v vsebnik z uporabo stikala --bind $PATH.

Več informacij najdete povezavi.

Graditev

Pripravljanje lastnega vsebnika:

$ apptainer build --sandbox --fix-perms container/ docker://centos:latest

Lupina

$ apptainer shell container.sif
$ apptainer shell --writable --fakeroot container/

Izvršitev

$ apptainer exec --fakeroot container/ whoami

Predpomnilnik

$ apptainer cache list
$ apptainer cache clean --type=all

Priprava datoteke z definicijo

$ vim example.def
bootstrap: docker
from: ubuntu:latest

%environment
    export LC_ALL=C
%runscript
    echo "This is what happens when you run the container.."
%post 
   apt-get -y update
   apt-get -y install <package-name>
   apt-get clean
%labels
   Maintainer Y
   Version 1.0
%help
    Description of help section.

Fakeroot je funkcionalnost, ki omogoča uporabnikokm brez privilegijev, da pridobijo ustrezne pravice "root" znotraj vsebnikov s stikalom -–fakeroot. Pravice gostiteljskih sistemov datotek (FS) so ustrezno preslikane znotraj vsebnika. Poleg tega se priporoča, da uporabite stikalo --fix-perms, ki ustrezno uravnava in prilagaja pravice znotraj vsebnika.

Več informacij najdete povezavi

$ apptainer build --fix-perms --sandbox --fakeroot container/ example.def

Vsebnik samo za branje (stisnjen squashfs) je format SIF (Singularity Image Format), ki se lahko pretvori v sliko s stikalom --writable ali stikalom sandbox na direktorije sandbox. Zapisljivo stikalo (za razliko od direktorijev sandbox) ne omogoča stalnih/trajnih sprememb.

$ apptainer build --sandbox --fakeroot  container/ container.sif
$ apptainer build --sandbox --fakeroot  container.simg container.sif

Opomba

Fakeroot za vse uporabnike je privzeto nastavljen na način root-mapped user namespace. Če za namen izdelave lastnih vsebnikov potrebujete rootless mode, pošljite zahtevo za omogočitev na support@sling.si

Za več informacij glejte uradno dokumentacijo: