Häufig genutzte Befehle
Diese Seite soll kurz beschreiben wie ein einfacher Workflow mit Singularity aussehen kann und gibt eine kurze Übersicht über oft genutzte Befehle.
Inhaltsverzeichnis
-
Häufig genutzte Befehle
- Bau des Containers (build)
- Befehl im Container ausführen (exec)
- Container starten (run)
- Container im Hintergrund als Service starten (instance)
- Shell im Container starten (shell)
- Containerbeschreibung anzeigen (run-help)
- Definition File(s) eines Containers anzeigen (inspect)
- Labels eines Containers anzeigen (inspect)
Bau des Containers (build)
Root-Rechte sind notwendig! Alternativ kann man über den Remote Buildservice von Sylabs.io ohne Root-Rechte bauen. Dazu hier mehr.
Bau eines einfachen read-only (default) Containers aus einem selbst geschriebenen Definition Files:
$ sudo singularity build CONTAINER.sif DEFINITIONFILE.def
Bau eines beschreibbaren bzw. veränderbaren Containers aus einem selbst geschriebenen Definition Files:
$ sudo singularity build -s CONTAINER.sif/ DEFINITIONFILE.def
- -s steht hier für Sandbox
- alternativ kann auch --sandbox verwendet werden
Bau eines Containers aus einer Containerquelle wie dem Docker Hub:
$ sudo singularity build CONTAINER.sif docker://ubuntu:latest
Bau aus eines beschreibbaren Containers aus einem read-only Container:
$ sudo singularity build -s CONTAINER.SIF/ CONTAINER.SIF
Befehl im Container ausführen (exec)
Anzeigen der Linux-Version des Containers:
$ singularity exec CONTAINER.SIF cat /etc/issue
Nachinstallieren eines Pakets in den Container:
$ sudo singularity exec --writable CONTAINER.SIF/ apt-get install -y vim
- Der Container wird verändert und muss mit Schreibberechtigung (--writable) gestartet werden.
- Root-Rechte sind zum Installieren von Paketen notwendig.
Erstellen einer Datei:
$ singularity exec --writable CONTAINER.SIF/ touch test
- Der Container wird verändert, da eine neue Datei an "/" erstellt wird und somit muss er mit Schreibrechten gestartet werden.
- Es sind keine Root-Rechte notwendig.
Container starten (run)
Container wird gestartet (%runscript-Section des Definition Files wird ausgeführt):
$ singularity run CONTAINER.SIF
Alternativ lässt sich ein Container so starten:
$ ./CONTAINER.SIF
Argumente können hier übergeben werden:
$ singularity run CONTAINER.SIF arg0 arg1 arg2
Wahlweise können weitere Verzeichnisse eingebunden werden:
$ singularity run --bind /opt, /data:/mnt CONTAINER:SIF
- Das Verzeichnis /opt des Hosts ist unter /opt im Container erreichbar.
- Das Verzeichnis /data des Hosts ist unter /mnt im Container erreichbar.
Container im Hintergrund als Service starten (instance)
Zeigt alle laufenden Singularity-Instanzen an:
$ singularity instance list
Starten einer Singularity-Instanz:
$ singularity instance start CONTAINER.SIF INSTANCENAME [arg0 arg1]
Stoppen einer Singularity-Instanz:
$ singularity instance stop INSTANCENAME
Stoppen aller Singularity-Instanzen:
$ singularity instance stop -a
Shell im Container starten (shell)
Starten einer Shell in einem Container:
$ singularity shell CONTAINER.SIF
Starten einer Shell in einer Singularity-Instanz:
$ singularity shell instance://INSTANCENAME
Containerbeschreibung anzeigen (run-help)
Containerbeschreibung eines lokalen Containers anzeigen:
$ singularity run-help CONTAINER.SIF
Definition File(s) eines Containers anzeigen (inspect)
Das Definition File(s) anzeigen, mit dem dieser Container gebaut wurde:
$ singularity inspect -d CONTAINER.SIF
Container können aus Containern gebaut werden. Wenn diese auch aus Definition Files gebaut worden sind, ist eine Historie innerhalb des Containers in folgendem Verzeichnis zu finden:
/.singularity.d/bootstrap_history
Labels eines Containers anzeigen (inspect)
Die Labels entsprechen den im Definition File angegebenen Metadaten wie etwa Autor oder Version.
$ singularity inspect CONTAINER.SIF