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 Singularity nameščeno in prilagojeno delu na superračunalnikih (HPC).

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

Vsebniki Singularity

Singularity 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. Singularity nudi visoko ravne prenosljivosti – Singularity Image Format (SIF) in ponovljivost vsebnikov s pomočjo datotek z definicijo ali opisom (.def/.dsc).

Več informacij najdete v uradni dokumentaciji: https://sylabs.io/docs/

Ukazi Singularity

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

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

Za zagon vsebnika:

$ singularity run container.sif

Za zagon ukaza v lokalnem vsebniku:

$ singularity exec container.sif <command>

Lupina lokalnega vsebnika:

$ singularity shell container.sif

Tiskanje podatkov lokalnega vsebnika:

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

Tiskanje razdelka "Pomoč":

$ singularity run-help container.sif

Dodatne ukaze najdete v razdelku "Pomoč":

$ singularity 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: Uporabniški priročnik

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:

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

Lupina

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

Izvršitev

$ singularity exec --fakeroot container/ whoami

Predpomnilnik

$ singularity cache list
$ singularity 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 prasvice "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

$ singularity 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.

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

Za več informacij glejte uradno dokumentacijo: