-
Esimerkkejä
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:
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:
Lopuksi voimme suorittaa komentoja kontin sisällä. Voimme esimerkiksi testata konttia listaamalla Pipillä asennetut Python-paketit:
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:
Bootstrap: localimage
From: python-pip.sif
%post
python3.11 -m pip install --no-cache-dir pandas
Nyt rakennamme kontin tavalliseen tapaan:
Listataan Pipillä asennetut paketit nähdäksemme lisäämämme paketit:
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.
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:
Voimme myös käynnistää maken argumenteilla, kuten PREFIX, rakentaaksemme kontin toiseen hakemistoon:
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: