Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

Esimerkkejä

Tämä osio sisältää esimerkkejä konttien rakentamisesta ja ajamisesta Puhdissa ja Mahdissa.

Esimerkki: Python-virtuaaliympäristö

Seuraavaksi annamme esimerkin kontista, jossa on järjestelmän Python sekä virtuaaliympäristö, johon on asennettu Python-paketteja Pipillä. Voimme määritellä build-määrityksen seuraavasti:

python-pip.def
Bootstrap: docker
From: docker.io/rockylinux/rockylinux:8.10

%post
    # Replace the failing commands with always succeeding dummies.
    cp /usr/bin/true /usr/sbin/useradd
    cp /usr/bin/true /usr/sbin/groupadd

    # Install Python with system package manager.
    dnf -y update
    dnf -y install python3.11 python3.11-pip
    dnf -y clean all

    # Create a Python virtual environment and install packages using pip.
    python3.11 -m venv /opt/venv
    export PATH=/opt/venv/bin:$PATH
    python3.11 -m pip install --no-cache-dir numpy

%environment
    export PATH=/opt/venv/bin:$PATH

Nyt voimme rakentaa konttikuvan seuraavasti:

apptainer build --fakeroot --bind="$TMPDIR:/tmp" python-pip.sif python-pip.def

Lopuksi voimme suorittaa komentoja kontin sisällä. Voimme esimerkiksi testata konttia listaamalla Pipillä asennetut Python-paketit:

apptainer exec python-pip.sif pip --no-cache list

Esimerkki: Paikallisen kuvan laajentaminen

Voimme myös laajentaa olemassa olevia SIF-kuvia. Tässä esimerkissä laajennamme python-pip.sif-konttikuvaa lisäämällä siihen toisen Python-kirjaston seuraavasti:

python-pip-2.def
Bootstrap: localimage
From: python-pip.sif

%post
    python3.11 -m pip install --no-cache-dir pandas

Nyt rakennamme kontin tavalliseen tapaan:

apptainer build --fakeroot --bind="$TMPDIR:/tmp" python-pip-2.sif python-pip-2.def

Listataan Pipillä asennetut paketit nähdäksemme lisäämämme paketit:

apptainer exec python-pip.sif pip --no-cache list

Esimerkki: Make-työkalun käyttäminen konttien rakentamiseen

Makefilet ovat erinomainen tapa organisoida konttien rakentamisen logiikka. Jos Makefilejen toimintatapa ei ole sinulle tuttu, suosittelemme lukemaan erinomaisen Makefile-opastuksen.

Tässä on esimerkki Makefilen käyttämisestä kontin rakentamiseen määritystiedostosta nimeltä container.def SIF-tiedostoksi nimeltä container.sif.

container.def
Bootstrap: docker
From: docker.io/rockylinux/rockylinux:8.10
Makefile
TMPDIR ?= /tmp
PREFIX := .

CONTAINER_SIF := $(PREFIX)/container.sif
CONTAINER_DEF := container.def

.PHONY: all
all: $(CONTAINER_SIF)

$(CONTAINER_SIF): $(CONTAINER_DEF)
    apptainer build --fakeroot --bind=$(TMPDIR):/tmp $@ $<

.PHONY: clean
clean:
    rm -f $(CONTAINER_SIF)

Käynnistetään Make kontin rakentamiseksi:

make

Voimme myös käynnistää maken argumenteilla, kuten PREFIX, rakentaaksemme kontin toiseen hakemistoon:

make PREFIX=/projappl/project_id

Esimerkki: Kiihdytetty visualisointisovellus

Aloita rakentamalla visualization -peruskuva, joka sisältää VirtualGL:n, sen riippuvuudet ja apuskriptit. Voimme rakentaa kiihdytettyjä visualisointisovelluksia, kuten Blenderin, visualization-peruskuvan päälle. Sovellus tulee suorittaa peruskonttiin asennetulla vglrun_wrapper-skriptillä.

Muut sovelluskontit

CSC:llä on konttien build-reseptejä useille sovelluksille singularity-recipes -repositoriossa. Tässä ovat reseptit, jotka voidaan rakentaa Apptainerilla fakerootia käyttäen Puhdissa ja Mahdissa:

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta