#acl hayd@cbs.mpg.de:read,write,delete,revert,admin Known:read,write All:read = 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. <> == Bau des Containers (build) == * Root-Rechte sind notwendig! Alternativ kann man über den [[https://cloud.sylabs.io/builder|Remote Buildservice von Sylabs.io]] ohne Root-Rechte bauen. Dazu [[https://wiki.init.mpg.de/IT4Science/SingularityContainerBauen#Buildservice_statt_Root|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 }}}