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:
- Knjižnica vsebnikov Singularity: https://cloud.sylabs.io/library
- Docker Hub: https://hub.docker.com/
- Singularity Hub: https://singularity-hub.org/
- Yum
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 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
$ 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
Opomba
Funkcija fakeroot je privzeto onemogočena za vse uporabnike. Funkcionalnost vam lahko omogočimo za namen priprave lastnih vsebnikov.Zahtevo posredujte na support@sling.si.