Docker unter Linux

Docker installieren

Diese Anleitung geht von einem Debian-basiertem Linux-System aus (Ubuntu/elementary). Ich selbst habe hierzu ein Ubuntu 20.04 LTS verwendet.

Das Zielsystem sollte auf einem aktuellen System installiert werden.

apt update && apt upgrade

Danach werden einige Helferlein installiert (u.a. curl, apt-add-repository):

sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

Jetzt können wir den Schlüssel für das Docker-Repository herunterladen:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

und das Docker-Repository hinzufügen:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && apt update

Jetzt können wir Docker installieren. (docker-ce installiert die Community Edition von Docker)

apt install docker-ce

Jetzt sollte docker installiert und testbereit sein:

docker info

Installieren von nvidia-docker

Wenn ihr eine NVidia-GPU habt, könnt ihr ebenfalls nvidia-docker installieren. Damit können Docker-Container auf eure GPU zugreifen.

Herunterladen des Repository Sicherheitsschlüssels:

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -

Bestimmen des Betriebssystems:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

Herunterladen der Hinzufügen des nvidia Repositories:

curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list 
sudo apt update

Installieren von nvidia-docker (sowie ein docker daemon reload):

sudo apt -y install nvidia-docker2 && sudo pkill -SIGHUP dockerd

Zuletzt kann die Installation von nvidia-docker getestet werden:

nvidia-docker run -it --rm nvidia/cuda:latest nvidia-smi

Docker verwenden

Herunterladen von Images und Ausführen von Containern:

docker pull svekre/anaconda3:smpl

Einfaches ausführen und kontrollieren der Container

docker images
docker run -i -t svekre/anaconda3:smpl
docker ps

Images und Container analysieren

docker inspect name|<ID>
docker logs name|<ID

Starten der Jupyter Notebook Umgebung unter Linux

Um die Notebooks nicht zu verlieren die man später unter Jupyter erstellt, bietet es sich an einen Ordner mit dem Docker-Container zu verknüpfen. Hierbei habe ich den Ordner /opt/notebooks lokal erstellt und werde den Ordner ebenso im Container übernehmen.

nvidia-docker run -i -t -v /opt/notebooks:/opt/notebooks -p 8888:8888 svekre/anaconda3:latest /bin/bash -c "/opt/anaconda3/bin/jupyter notebook --ip='*' --notebook-dir=/opt/notebooks --no-browser --port=8888"

Der Shellaufruf als Beispiel:

Starten eines Jupyter Notebooks mit docker

Der Link wird kopiert und auf dem aufrufenden Rechner (hier virchow) in die Addresszeile des Browser (chromium-browser) kopiert:

Jupyter Notebook im Chromium-Browser

Aufräumen

Das Arbeiten mit docker verlangt auch, dass man manchmal Images bzw. Container umbenennt, benennt und|oder löscht.

Umbenennen:

docker tag <name>|<ID> <name>

Images löschen

docker rmi <Image-Name>|<Image-ID>

Container löschen

docker rm <Container-ID>|<Container-Name>

Docker-GUI Kitematic

Mit der Installation von kitematic, gibt es eine lokale Docker-GUI um seine Images/Container zu verwalten:

apt install kitematic