|
|
# 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.
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
## Bau des Containers (build)
|
|
|
|
|
|
* Root-Rechte sind notwendig! Alternativ kann man über den [Remote Buildservice von Sylabs.io](https://cloud.sylabs.io/builder) ohne Root-Rechte bauen oder die Gitlab-Pipeline nutzen, dazu mehr [hier](https://gitlab.gwdg.de/mpg-singularity/mpg-singularity/-/wikis/Bauen-von-Containern-mit-Hilfe-der-Gitlab-Pipeline).
|
|
|
|
|
|
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
|
|
|
```
|
|
|
|
|
|
|
|
|
|