json="{"targeting":{"kw":["Ubuntu","Docker"],"cms":4627436}}"

Docker unter Ubuntu einrichten und nutzen

Mit Docker lassen sich Anwendungen als Container nutzen und zwar auch direkt auf dem Desktop. Hier lesen Sie, wie Sie die Docker-Umgebung einrichten, Images nutzen und letztlich auf Anwendungen zugreifen.

Docker installieren

Docker-Container lassen sich wunderbar einfach vom Docker Hub, dem Docker-Appstore, beziehen und starten - aber die Docker-Einrichtung sieht für Einsteiger sicherlich zunächst grausig aus. Docker findet sich leider nicht in Ubuntus Standardpaketquellen. Es müssen einige Abhängigkeiten installiert, Updates durchgeführt und Modifikationen vorgenommen werden. Aber zunächst die gesamte Installation als ein großer Befehl, der Übersicht halber:

sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update -y
sudo apt-get install docker-ce -y

Der erste "apt-get"-Befehl installiert zu Beginn schlicht einige Abhängigkeiten - das abschließende "-y" sorgt für eine stille Installation und beantwortet alle Nachfragen mit "Ja". Die "curl"-Zeile besorgt Dockers GPG-Schlüssel für die Identifizierung am Docker-Repository (Paketquelle). Dieses Repository wird anschließend über "add-apt-repository" zum System hinzugefügt. Und zwar das für das lokale System passende Repo, was wiederum über "lsb_release" sichergestellt wird, das die benötigten Systeminformationen bereitstellt.

Abschließend wird über "apt-get" erst aktualisiert und dann endlich auch die Docker Community Edition (docker-ce) installiert. Ab jetzt wird es einfacher (und dann wieder komplizierter ...).

Erste Schritte in Docker

Zum Testen der neuen Docker-Installation sollten Sie es mit einem schlichten "docker version" versuchen. Viele Docker-Befehle verlangen Adminrechte. Wenn Sie keine Lust haben, ständig "sudo" zu tippen, starten Sie eine interaktive Sudo-Shell mit "sudo -i". Ein paar wichtige Befehle: Lokale Images sehen Sie mit "docker images", laufende Container mit "docker container ls" oder "docker ps" und Hilfe bekommen Sie über "docker --help" beziehungsweise über "docker BEFEHL --help".

Soweit können Sie sich zwar etwas informieren, aber ohne Images, also fertig containerisierte Anwendungen, bleibt alles Theorie.

Docker-Hub-Container nutzen

Docker Hub dienst als eine Art Appstore und bietet hunderte Images, vom simplen Hallo-Welt, über einzelne Anwendungen wie Browser, bis hin zu kompletten Linux-Distributionen. Und das Beste: Sie können Sie direkt aus dem Terminal heraus herunterladen. Das übernimmt der Befehl "pull":

sudo docker pull hello-world

"hello-world" ist einfach ein Demo-Container auf Docker Hub. Über "docker images" sollten Sie anschließend ein erstes Image sehen. Starten können Sie es mit dem "run"-Befehl:

s
udo docker run hello-world

In diesem Fall besteht die ganze "Anwendung" aus einem kurzen Infotext direkt im Terminal. Und es wird noch komfortabler: Das Herunterladen mit "pull" können Sie sich komplett sparen. Wird das "hello-world"-Image lokal nicht gefunden, lädt Docker es automatisch vom Hub herunter.

Spannender wird es mit komplexeren Containern, etwa "ubuntu". Versuchen Sie es beispielsweise mit:

sudo docker run -it ubuntu

Damit wird das auf Docker Hub verfügbare Image "ubuntu" heruntergeladen und ausgeführt, und zwar mit einem interaktiven (-i) eigenem TTY/Prompt (-t). Ihr Prompt zeigt nun etwas in der Art "root@8220hhsd82:/#" - Sie befinden sich im Container-Ubuntu. Hier könnten Sie nun wie gewohnt arbeiten und beispielsweise Bash-Kommandos ausprobieren. Starten Sie den Container nun nochmal mit folgendem Kommando:

sudo docker run -it -d ubuntu

Das "-d" steht für "Detached" und führt den Container im Hintergrund aus - was Sie sich mit "docker ps" anschauen können. Der ps-Aufruf zeigt in der ersten Spalte die Container-ID, die Sie kopieren sollten - markieren genügt, einfügen können Sie über die mittlere Maustaste. Auch in diesem Container können Sie Befehle ausführen und die Ergebnisse in Ihrem Host-Terminal anzeigen lassen:

sudo docker exec 8220hhsd82 ls

Diese Eingabe führt den Befehl "ls" in dem Container-Ubuntu aus und gibt die Liste lokal aus. Die Container-ID ist auch zum Stoppen und Löschen von Images notwendig:

sudo docker stop 8220hhsd82
sudo docker rm 8220hhsd82

Vermutlich möchten Sie auch grafische Anwendungen nutzen. Im Grunde ist das ganz simpel: Sie übergeben das Bild vom X-Server im Container an den lokalen X-Server des Hosts. Als Beispiel kann das gute alte Xeyes dienen:

sudo docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix gns3/xeyes

Über "-e" wird hier die Host-Umgebungsvariable "DISPLAY" auf den "DISPLAY"-Wet des Container-Systems gesetzt. Mit "-v" wird das X11-Verzeichnis des Hosts als X11-Verzeichnis im Container-System eingehängt, sodass die Konfigurationsdaten aus dem Container auch lokal zur Verfügung stehen. "gns3/xeyes" ist das Xeyes-Image vom Hub, hier eben von Nutzer "gns3".

Tipp: Vermutlich werden Sie zunächst die Fehlermeldung bekommen, dass das Display nicht geöffnet werden kann. Das liegt dann in der Regel daran, dass die Rechte fehlen. Sie müssen explizit die Verbindung mit dem Display erlauben: Ein kurzes "xhost +" genügt dafür.

Eine andere typische Zugriffsart: Per Browser beispielsweise auf einen Webserver-Container zugreifen. Das ginge etwa mit:

sudo docker run -p 81:80 httpd

"httpd" spendiert schlicht einen Apache-Webserver und über "-p" wird angegeben, dass der Container-Port 80 (Webserver-Standard) über den Host-Port 81 zu erreichen ist, also im Browser des Hosts via "localhost:81". Wenn Sie hier auf "80:80" mappen, wie es so schön heißt, würde im Browser ein "localhost" oder "127.0.0.1" genügen - das funktioniert aber natürlich nur, wenn auf dem Host nicht selbst ein Webserver läuft.

An dieser Stelle müssen Sie sich einfach nach und nach mit den Run-Optionen befassen, beispielsweise Systemressourcen wie CPU und Arbeitsspeicher kontrollieren.

Container aus Dockerfiles erstellen

Bisweilen werden Sie vielleicht Container nutzen wollen, die nicht so einfach über Docker Hub zu bekommen sind. Bei GitHub finden Sie zum Beispiel an vielen Stellen so genannte Dockerfiles: In der Datei "dockerfile" stehen alle nötigen Informationen, um ein Image zu bauen, also etwa das Herunterladen des obigen Ubuntu-Basis-Images und das Installieren von Apps wie eben Xeyes, Apache oder auch Ihren eigenen Apps. Am Ende haben Sie wieder ein ganz normales, lokales Image.

Das Erstellen ist ganz simpel: Navigieren Sie im Terminal in den Ordner, wo Sie die Datei "dockerfile" gespeichert haben und geben Sie folgendes ein:

sudo docker build -t mein-container

Da die Datei immer "dockerfile" heißt, wird hier über den Punkt lediglich das aktuelle Verzeichnis als Quelle angegeben. Das Image finden Sie anschließend wieder per "docker images" in Ihrer Liste.

Docker bietet noch massenhaft Optionen und Möglichkeiten. Für reine Nutzer fertiger Container-Lösungen spielt sich das Meiste davon im "run"-Befehl ab, da Container mit dem Start eben auch massiv konfiguriert werden können. Die zweite Baustelle sind die Dockerfiles, mit denen Sie eigene Container aufbauen können - und das ist im Grunde nicht sonderlich schwierig, es sind nur ein paar simple Tags und Linux-Befehle.

Ein Tipp zum Schluss: Sie können aus einem laufenden Container auch ein neues Image mit samt Ihrer Änderungen erstellen:

sudo docker commit 8220hhsd82 mein-neues-images

Und wenn Sie dieses Image schließlich noch zum Weitergeben oder Transportieren speichern wollen: Mit folgendem Befehl speichern Sie das gewünschte Image unter dem nach "-o" angegebenen Dateinamen.

sudo docker save -o mein-gesichertes-image mein-neues-image

Mehr zum Thema: