<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>SingularityWorflow</title><revhistory><revision><revnumber>4</revnumber><date>2019-06-18 09:52:10</date><authorinitials>thunert@cbs.mpg.de</authorinitials><revremark>Metadaten</revremark></revision><revision><revnumber>3</revnumber><date>2019-06-17 09:19:09</date><authorinitials>thunert@cbs.mpg.de</authorinitials><revremark>Def.File anzeigen</revremark></revision><revision><revnumber>2</revnumber><date>2019-06-17 07:48:16</date><authorinitials>hayd@cbs.mpg.de</authorinitials></revision><revision><revnumber>1</revnumber><date>2019-06-14 14:18:48</date><authorinitials>thunert@cbs.mpg.de</authorinitials><revremark>Workflow</revremark></revision></revhistory></articleinfo><section><title>Häufig genutzte Befehle</title><para>Diese Seite soll kurz beschreiben wie ein einfacher Workflow mit Singularity aussehen kann und gibt eine kurze Übersicht über oft genutzte Befehle. </para><section><title>Bau des Containers (build)</title><itemizedlist><listitem><para>Root-Rechte sind notwendig! Alternativ kann man über den <ulink url="https://cloud.sylabs.io/builder">Remote Buildservice von Sylabs.io</ulink> ohne Root-Rechte bauen. Dazu <ulink url="https://wiki.init.mpg.de/IT4Science/SingularityContainerBauen#Buildservice_statt_Root">hier</ulink> mehr. </para></listitem></itemizedlist><para>Bau eines einfachen read-only (default) Containers aus einem selbst geschriebenen Definition Files: </para><screen><![CDATA[$ sudo singularity build CONTAINER.sif DEFINITIONFILE.def]]></screen><para>Bau eines beschreibbaren bzw. veränderbaren Containers aus einem selbst geschriebenen Definition Files: </para><screen><![CDATA[$ sudo singularity build -s CONTAINER.sif/ DEFINITIONFILE.def]]></screen><itemizedlist><listitem><para>-s steht hier für Sandbox </para></listitem><listitem><para>alternativ kann auch --sandbox verwendet werden </para></listitem></itemizedlist><para>Bau eines Containers aus einer Containerquelle wie dem Docker Hub: </para><screen><![CDATA[$ sudo singularity build CONTAINER.sif docker://ubuntu:latest]]></screen><para>Bau aus eines beschreibbaren Containers aus einem read-only Container: </para><screen><![CDATA[$ sudo singularity build  -s CONTAINER.SIF/ CONTAINER.SIF]]></screen></section><section><title>Befehl im Container ausführen (exec)</title><para>Anzeigen der Linux-Version des Containers: </para><screen><![CDATA[$ singularity exec CONTAINER.SIF cat /etc/issue]]></screen><para>Nachinstallieren eines Pakets in den Container: </para><screen><![CDATA[$ sudo singularity exec --writable CONTAINER.SIF/ apt-get install -y vim]]></screen><itemizedlist><listitem><para>Der Container wird verändert und muss mit Schreibberechtigung (--writable) gestartet werden. </para></listitem><listitem><para>Root-Rechte sind zum Installieren von Paketen notwendig. </para></listitem></itemizedlist><para>Erstellen einer Datei: </para><screen><![CDATA[$ singularity exec --writable CONTAINER.SIF/ touch test]]></screen><itemizedlist><listitem><para>Der Container wird verändert, da eine neue Datei an &quot;/&quot; erstellt wird und somit muss er mit Schreibrechten gestartet werden.  </para></listitem><listitem><para>Es sind keine Root-Rechte notwendig. </para></listitem></itemizedlist></section><section><title>Container starten (run)</title><para>Container wird gestartet (%runscript-Section des Definition Files wird ausgeführt): </para><screen><![CDATA[$ singularity run CONTAINER.SIF]]></screen><para>Alternativ lässt sich ein Container so starten: </para><screen><![CDATA[$ ./CONTAINER.SIF]]></screen><para>Argumente können hier übergeben werden: </para><screen><![CDATA[$ singularity run CONTAINER.SIF arg0 arg1 arg2]]></screen><para>Wahlweise können weitere Verzeichnisse eingebunden werden: </para><screen><![CDATA[$ singularity run --bind /opt, /data:/mnt CONTAINER:SIF]]></screen><itemizedlist><listitem><para>Das Verzeichnis /opt des Hosts ist unter /opt im Container erreichbar. </para></listitem><listitem><para>Das Verzeichnis /data des Hosts ist unter /mnt im Container erreichbar. </para></listitem></itemizedlist></section><section><title>Container im Hintergrund als Service starten (instance)</title><para>Zeigt alle laufenden Singularity-Instanzen an: </para><screen><![CDATA[$ singularity instance list]]></screen><para>Starten einer Singularity-Instanz: </para><screen><![CDATA[$ singularity instance start CONTAINER.SIF INSTANCENAME [arg0 arg1]]]></screen><para>Stoppen einer Singularity-Instanz: </para><screen><![CDATA[$ singularity instance stop INSTANCENAME]]></screen><para>Stoppen aller Singularity-Instanzen: </para><screen><![CDATA[$ singularity instance stop -a]]></screen></section><section><title>Shell im Container starten (shell)</title><para>Starten einer Shell in einem Container: </para><screen><![CDATA[$ singularity shell CONTAINER.SIF]]></screen><para>Starten einer Shell in einer Singularity-Instanz: </para><screen><![CDATA[$ singularity shell instance://INSTANCENAME]]></screen></section><section><title>Containerbeschreibung anzeigen (run-help)</title><para>Containerbeschreibung eines lokalen Containers anzeigen: </para><screen><![CDATA[$ singularity run-help CONTAINER.SIF]]></screen></section><section><title>Definition File(s) eines Containers anzeigen (inspect)</title><para>Das Definition File(s) anzeigen, mit dem dieser Container gebaut wurde: </para><screen><![CDATA[$ singularity inspect -d CONTAINER.SIF]]></screen><para>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: </para><screen><![CDATA[ /.singularity.d/bootstrap_history]]></screen></section><section><title>Labels eines Containers anzeigen (inspect)</title><para>Die Labels entsprechen den im Definition File angegebenen Metadaten wie etwa Autor oder Version.  </para><screen><![CDATA[$ singularity inspect CONTAINER.SIF]]></screen></section></section></article>