Definition File
Ein Defnition-File ist wie eine Blaupause zu verstehen für den Bau eines Containers. Immer absolute Pfade angeben bzw. Umgebungsvariablen benutzen!
Inhaltsverzeichnis
Was ist ein Definition File?
Es legt fest:
- auf welchem OS bzw. Container basierend
- welche Pakete installiert werden sollen
- Umgebungsvariablen zur Laufzeit
- benötigte Files vom Host
- Metadaten und Beschreibung des Containers
Komponenten
- Header:
- beschreibt KernOS bzw. Container mit Quelle
- konfigurieren von KernOS-Features
- Linuxdistribution, genaue Version, Pakete die Teil der Installation sein müssen
- Sections:
- optional
- kann mehrere Instanzen vorhandener Sections enthalten
- /bin/sh interpreter und akzeptieren /bin/sh optionen
- ausgeführt zur "build time" oder runtime
Header
- Bootstrap: Gibt den bootstrap agent an der zum erstellen den Kernsystems genutzt wird
möglich: library, docker, shub, localimage, yum, debootstrap, arch, busybox, zypper (genaueres in Doku: https://www.sylabs.io/guides/3.2/user-guide.pdf)
- Beispiel für einen Header:
Bootstrap: library From: debian:7
oder
Bootstrap: library From: ubuntu:18.04
Sections
- wenn ein Befehl fehlschlägt, wird der build-Prozess gestoppt
- es gibt verschiedenste sections: %setup, %files, %post, %runscript, %startscript, %test, %labels, %help
%setup
- Befehle, die außerhalb den Containers auf dem Host-System ausgeführt werden
- werden ausgeführt, nachdem das KernOS den Container installiert worden ist
ContainerFS kann durch Umgebungsvariabe referenziert werden: $SINGULARITY_ROOTFS
- Beispiel:
%setup touch /file1 touch${SINGULARITY_ROOTFS}/file2
- file1 wird auf dem Host erstellt (/)
- file2 wird im Container erstellt (/)
- für das Kopieren von Files wird %files empfohlen, da %setup mit erweiterten Privilegien (root) ausgeführt wird