Uporabimo obstoječi vsebnik
Ukazi ogrodja Apptainer imajo obliko
apptainer [<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. Namesto ukaza apptainer
lahko uporabimo tudi ukaz singularity
. Na ta način ostajata Apptainer in Singularity kompatibilna. Z ukazom version
pogledamo nameščeno različico ogrodja.
$ apptainer version
1.3.0-1.el8
apptainer 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
:
$ apptainer help pull
Pull an image from a URI
Usage:
apptainer 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:
...
apptainer 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. Najprej dodamo repozitorij v register, da ga apptainer lahko najde.
$ apptainer remote add --no-login SylabsCloud cloud.sylabs.io
$ apptainer remote use SylabsCloud
apptainer remote add --no-login SylabsCloud cloud.sylabs.io &&
apptainer remote use SylabsCloud
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.
$ apptainer pull library://sylabsed/examples/lolcow:latest
apptainer pull library://sylabsed/examples/lolcow:latest
Po končanem prenosu imamo v mapi datoteko lolcow_latest.sif
. Vsebniki Apptainer/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
hpc-login1.arnes.si
$ whoami
sling001
$ cat /etc/os-release
NAME="AlmaLinux"
VERSION="8.9 (Midnight Oncilla)"
...
$ echo $PATH
/d/hpc/home/sling001/.local/bin:/d/hpc/home/sling001/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/puppetlabs/bin
$ 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.
$ apptainer shell lolcow_latest.sif
Singularity>
apptainer shell lolcow_latest.sif
Vpišimo še enkrat vse prejšnje ukaze in še nekaj dodatnih
Singularity> hostname
hpc-login1.arnes.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 Apptainer, 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 AlmaLinux).
- Okoljska spremenljivka
PATH
se v vsebniku spremeni. Vsebnik privzeto vidi mape$HOME
,$PWD
,/sys
,/proc
,/tmp
in še nekatere. Mape/d/hpc/home/sling001/.local/bin
, ki ni na teh lokacijah, v vsebniku ne vidimo. Vsebnik je spremenljivkoPATH
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 Apptainer 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.
$ apptainer exec lolcow_latest.sif ls /usr/games/
cowsay cowthink fortune lolcat
$ apptainer exec lolcow_latest.sif cowthink "Hmmmm..."
----------
( Hmmmm... )
----------
...
$ apptainer exec lolcow_latest.sif fortune
What happened last night can happen again.
$ apptainer exec lolcow_latest.sif lolcat lolcow-os.info
apptainer exec lolcow_latest.sif ls /usr/games/
apptainer exec lolcow_latest.sif cowthink "Hmmmm..."
apptainer exec lolcow_latest.sif fortune
apptainer 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 preprosto vpišemo njegovo ime, saj je izvršljiva datoteka.
$ apptainer 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. /
----------------------------------------
...
$ apptainer run library://sylabsed/examples/lolcow:latest
--------------------------------------
/ Abandon the search for Truth; settle \
\ for a good fantasy. /
--------------------------------------
apptainer run lolcow_latest.sif
./lolcow_latest.sif
apptainer run library://sylabsed/examples/lolcow:latest
V zadnjem primeru zaženemo vsebnik kar neposredno iz repozitorija. Ogrodje apptainer v tem primeru pripravi začasno sliko, ki jo po zaključku izvajanja vsebnika zbriše.
Preveri svoje znanje
Vaja