Skoči na vsebino

Uporabimo obstoječi vsebnik

Ukazi ogrodja Singularity imajo obliko

singularity [<globalna stikala>] <ukaz> [<stikala ukaza>] [<parametri>]

Globalna stikala, stikala ukaza in parametre navajamo po potrebi. Z globalnimi stikali lahko nastavimo način izpisovanja in razhroščevanja. Z ukazi povlečemo vsebnike iz repozitorija, jih gradimo, zaganjamo in še mnogo drugega. Z ukazom version pogledamo nameščeno različico ogrodja.

$ singularity version
3.6.3-10.cmi.0.el8
singularity version

Z ukazom help izpišemo splošno pomoč ali pomoč za izbrani ukaz. V zadnjem primeru dobimo natančno razlago stikal ukaza in parametrov. Na primer, za ukaz pull:

$ singularity help pull
Pull an image from a URI

Usage:
    singularity pull [pull options...] [output file] <URI>

Description:
    The 'pull' command allows you to download or build a container from a given
    URI. Supported URIs include:    
...
singularity help pull

Prenos pripravljenih vsebnikov

Delujoči vsebnik dobimo najhitreje tako, da ga potegnemo iz repozitorija. Najprej si poglejmo zabaven vsebnik lolcow, ki ga najdemo na repozitoriju Singularity Cloud Library. Na repozitoriju poiščemo povezavo do vsebnika. K sebi ga potegnemo z ukazom pull ali z ukazom build. Ukaz build ob prenosu vsebnik pretvori v najnovejši format, pri klicu moramo navesti še želeno ime vsebnika.

$ singularity pull library://sylabsed/examples/lolcow:latest
singularity pull library://sylabsed/examples/lolcow:latest

Po končanem prenosu imamo v mapi datoteko lolcow_latest.sif. Vsebniki Singularity so označeni s končnico sif (angl. Singularity Image File).

Ko se sklicujemo na vir vsebnika, navedemo:

  • library:// za vsebnike v repozitoriju Singularity Cloud Library,
  • docker:// za vsebnike v repozitoriju dockerhub,
  • kakšnega od množice drugih virov, ki jih na tej delavnici ne bomo potrebovali.

Interaktivno delo z vsebnikom

Preden zaženemo vsebnik, poglejmo nekaj nastavitev našega računalnika (gostitelja).

$ hostname
nsc-login.ijs.si
$ whoami
sling001
$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
...
$ echo $PATH
/ceph/grid/home/sling001/.local/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
$ ls 
lolcow_latest.sif
$ ls /usr/games
hostname
whoami
cat /etc/os-release
echo $PATH
ls 
ls /usr/games

Za interaktivno delo z vsebnikom uporabimo ukaz shell, ki bo vsebnik zagnal v ukazni vrstici, na podoben način, kot pri povezovanju na oddaljeni sistem preko protokola SSH.

$ singularity shell lolcow_latest.sif
Singularity> 
singularity shell lolcow_latest.sif

Vpišimo še enkrat vse prejšnje ukaze in še nekaj dodatnih

Singularity> hostname
nsc-login.ijs.si
Singularity> whoami
sling001
Singularity> cat /etc/os-release    
NAME="Ubuntu"
VERSION="18.10 (Cosmic Cuttlefish)"
...
Singularity> echo $PATH
/usr/games:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Singularity> ls 
lolcow_latest.sif
Singularity> ls /usr/games
cowsay  cowthink  fortune  lolcat
Singularity> cowsay "Hello!"
 --------
< Hello! >
 --------
...
Singularity> cp /etc/os-release ./lolcow-os.info
Singularity> exit
hostname
whoami
cat /etc/os-release
echo $PATH
ls /usr/games
cowsay "Hello!"
cp /etc/os-release ./lolcow-os.info
exit

Primerjava izpisov pokaže, nekaj pomembnih lastnosti vsebnikov Singularity, ki smo jih spoznali prej:

  • Vsebnik prevzame množico nastavitev od gostitelja (hostname).
  • Uporabniško ime v vsebniku je enako uporabniškemu imenu na gostitelju. Enako je s pravicami uporabnika.
  • Vsebnik zamenja uporabniški prostor (Ubuntu namesto CentOS Linux).
  • Okoljska spremenljivka PATH se v vsebniku spremeni. Vsebnik privzeto vidi mape $HOME, $PWD, /sys, /proc, /tmp in še nekatere. Mape /ceph/grid/home/sling001/.local/bin, ki ni na teh lokacijah, v vsebniku ne vidimo. Vsebnik je spremenljivko PATH dopolnil z mapo /usr/games.
  • Datoteke v omenjenih mapah, izpisali smo datoteki v trenutni mapi ($PWD), vidimo tudi v vsebniku.
  • Mapa /usr/games na gostitelju je prazna, v vsebniku pa so v njej štirje programi.
  • V vsebniku lahko zaganjamo ukaze operacijskega sistema in druge programe (ls, cowsay).
  • Iz vsebnika lahko tudi pišemo (kopiramo) v datotečni sistem gostitelja (ukaz cp).

Z ukazom exit zaključimo interaktivno delo in se vrnemo v ukazno vrstico gostitelja.

Izvajanje ukazov v vsebniku

Z ukazom exec lahko izvajamo ukaze v vsebniku. Ogrodje Singularity najprej zažene vsebnik, v našem primeru lolcow_latest.sif, nato pa v vsebniku zažene ukaz (ls) ali poljuben program, ki je nameščen v njem.

$ singularity exec lolcow_latest.sif ls /usr/games/
cowsay  cowthink  fortune  lolcat
$ singularity exec lolcow_latest.sif cowthink "Hmmmm..."
 ----------
( Hmmmm... )
 ----------
 ...
$ singularity exec lolcow_latest.sif fortune
What happened last night can happen again.
$ singularity exec lolcow_latest.sif lolcat lolcow-os.info
singularity exec lolcow_latest.sif ls /usr/games/
singularity exec lolcow_latest.sif cowthink "Hmmmm..."
singularity exec lolcow_latest.sif fortune
singularity exec lolcow_latest.sif lolcat lolcow-os.info

Zaganjanje vsebnika

Pri pripravi vsebnika lahko v zagonsko skripto (angl. runscript) vpišemo ukaze, ki se izvedejo ob zagonu. Vsebnik zaženemo z ukazom run ali pa preprostu vpišemo njegovo ime, saj je izvršljiva datoteka.

$ singularity run lolcow_latest.sif
 --------------------------------------     
/ Expect the worst, it's the least you \
\ can do.                              /
 --------------------------------------     
...
$ ./lolcow_latest.sif
 ----------------------------------------
/ Caution: breathing may be hazardous to \
\ your health.                           /
 ----------------------------------------
...
$ singularity run library://sylabsed/examples/lolcow:latest
 --------------------------------------
/ Abandon the search for Truth; settle \
\ for a good fantasy.                  /
 --------------------------------------
singularity run lolcow_latest.sif
./lolcow_latest.sif
singularity run library://sylabsed/examples/lolcow:latest

V zadnjem primeru zaženemo vsebnik kar neposredno iz repozitorija. Ogrodje Singularity v tem primeru pripravi začasno sliko, ki jo po zaključku izvajanja vsebnika zbriše.

Preveri svoje znanje

Vaja

Vaja 01