Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti will be decommissioned after Roihu becomes available. Users should clean up unnecessary files and move any required data by the end of August 2026. See the Roihu data preparation instructions for details.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

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