Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Najbitnija komanda apptainera je komanda build kojom se kontejneri mogu izgraditi u obliku:

  • image - slika ili oblik koji podržava samo čitanje, namijenjen finalnoj verziji kontejnera
  • sandbox - direktorij ili oblik koji podržava i pisanje, namijenjen razvoju kontejnera

...

U prvom slučaju, pri izgradnji kontejnera komandom build moramo navesti opciju build --sandbox koja će generirati kontejner u obliku direktorija ubuntu_20.04 :

...

Novonastali sandbox kontejner možemo modificirati korištenjem opcije shell --writable kojom otvaramo ljusku unutar kontejnera sa svim korisničkim knjižnicama koje doprema.

...

Code Block
languagebash
# ispis definicijske datoteke
[korisnik@kompjuter:~] $ cat ubuntu_20.04.def 
Bootstrap: docker
From: ubuntu:20.04

%post
  apt update
  apt install python3-pip -y

# izgradnja imagea iz definicijske datoteke
[korisnik@kompjuter:~] $ apptainer build ubuntu_20.04.sif ubuntu_20.04.def 
...
INFO:    Creating SIF file...
INFO:    Build complete: ubuntu_20.04.sif

# sadržaj trenutnog direktorija
[korisnik@kompjuter:~] $ ls -l
total 154504
drwxr-xr-x 18 korisnik korisnik      4096 svi  23 09:51 ubuntu_20.04
-rw-r--r--  1 korisnik korisnik        87 svi  23 10:22 ubuntu_20.04.def
-rwxr-xr-x  1 korisnik korisnik 158195712 svi  23 10:34 ubuntu_20.04.sif

...


S obzirom da je instalacija u primjeru veoma jednostavna i oslanja se na izvorni upravitelj knjižnica apt, jedino potrebno poglavlje je %post kojim se izvršavaju komande nakon izgradnje osnovnog kontejnera.

...

Dodatne detalje o ovim funkcionalnostima možete naći na službenim stranicama i našem wikiju Isabelle.

Korištenje kontejnera - exec/run

...

Code Block
languagebash
# interaktivna sjednica u kontejneru
[korisik@kompjuter] $ sudo apptainer shell --writable data_stack_sandbox/
INFO:    /etc/singularity/ exists; cleanup by system administrator is not complete (see https://apptainer.org/docs/admin/latest/singularity_migration.html)
WARNING: Skipping mount /etc/localtime [binds]: /etc/localtime doesn't exist in container
Apptainer> apt update
...
Reading state information... Done
10 packages can be upgraded. Run 'apt list --upgradable' to see them.

# instalacija pip3
Apptainer> apt install python3-pip -y
...
Running hooks in /etc/ca-certificates/update.d...
done.

# instalacija pythnpython knjižnica
Apptainer> pip3 install numpy scipy pandas matplotlib ipython
...
Successfully installed asttokens-2.2.1 backcall-0.2.0 contourpy-1.0.7 cycler-0.11.0 decorator-5.1.1 executing-1.2.0 fonttools-4.39.4 ipython-8.13.2 jedi-0.18.2 kiwisolver-1.4.4 matplotlib-3.7.1 matplotlib-inline-0.1.6 numpy-1.24.3 packaging-23.1 pandas-2.0.1 parso-0.8.3 pexpect-4.8.0 pickleshare-0.7.5 pillow-9.5.0 prompt-toolkit-3.0.38 ptyprocess-0.7.0 pure-eval-0.2.2 pygments-2.15.1 pyparsing-3.0.9 python-dateutil-2.8.2 pytz-2023.3 scipy-1.10.1 six-1.16.0 stack-data-0.6.2 traitlets-5.9.0 tzdata-2023.3 wcwidtWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
h-0.2.6

# ispis verzija knjižnica
Apptainer> pip3 freeze
...
ipython==8.12.2
matplotlib==3.7.1
matplotlib-inline==3.7.1
numpy==1.24.3
pandas==2.0.1
scipy==1.10.1
...

...