Um Docker Container nutzen zu können, muss die Software zunächst über die Docker Webseite geladen und installiert werden. Für jedes Betriebssystem gibt es eine eigene Version. Nach der Installation läuft Docker parallel zu anderen Programmen auf dem Host Betriebssystem und kann über die Kommando-Zeile verwaltet werden.
Für die Erzeugung und Ausführung von Containern müssen Docker Images bereitgestellt werden. Diese können selbst erstellt oder aus dem Docker Hub geladen werden. Im Folgenden werden praktische Beispiele zum Einstieg und Umgang mit Docker beschrieben.
Docker Images richtig laden – Hello World Docker
Nach der Installation von Docker kann mit dem Befehl docker run hello-world ein Container erzeugt werden. Der Befehl run bezieht sich immer auf ein Docker Image und führt dazu, dass ein Container erzeugt wird.
Da sich auf dem System jedoch noch keine Docker Images befinden, lädt Docker das Image automatisch aus dem Docker Hub herunter (pull complete) und erzeugt einen Container. Dies ist möglich, da der angegebene Name zu einem bekannten Image gehört, das von Docker ermittelt werden kann. Da das hello-world Image nur eine einfache Textausgabe enthält, kann über diesen Container zunächst nichts Weiteres ausgeführt werden.
$ docker run hello-world Output: >> Unable to find image 'hello-world:latest' locally >> latest: Pulling from library/hello-world >> ca4f61b1923c: Pull complete >> Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7 >> Status: Downloaded newer image for hello-world:latest >> Hello from Docker! >> This message shows that your installation appears to be working correctly. >> ...
Die Docker Container stellen die ausführende Einheit in Docker dar in denen alle Programme bereitgestellt werden.
Docker Image einfach laden - so geht's!
Aus dem Docker Hub können fertige Images auch direkt mittels pull-Befehl geladen werden. Für das vorliegende Beispiel wird die neueste LTS Version von Ubuntu aus dem Hub geladen. Dazu ist folgender Befehl in der Kommando-Zeile auszuführen:
$ docker pull ubuntu
Die heruntergeladenen Docker Images können wie folgt angezeigt werden:
$ docker images
Als Ergebnis erhält man eine Liste mit allen verfügbaren Images in der Docker Umgebung. Diese können nun zur Erzeugung von Containern genutzt werden. Zudem können diese Images mit eigenen Anwendungen und Konfigurationen erweitert werden.
Docker Container parametrisieren und starten
Das geladene Ubuntu Image soll nun verwendet werden, um einen Container zu erstellen. Der Befehl docker run -it erzeugt ein Pseudoterminal für eine Interprozesskommunikation zur direkten Interaktion mit dem Container.
Mit dem Parameter -name wird dem erzeugten Container ein Name manuell zugeteilt. Fehlt diese Angabe, erzeugt Docker einen Namen. Zudem besitzt jeder Container einen Unique Identifier, durch den er eindeutig ermittelt werden kann.
# Basisbefehl zum Erzeugen eines Containers $ docker run -it ubuntu # Vergabe eines Labels zur besseren Verwaltung der Container $ docker run –name ubuntuTest -it ubuntu
Nachdem ein Docker Container gestartet wurde, kann auf diesen zugegriffen werden. Um beispielsweise einen Webservice störungsfrei aufrufen zu können, sollte der Port festlegt werden über den der Service außerhalb des Containers erreichbar sein soll. Für einen Webservice wird der Port 80 hinterlegt. Hierbei findet ein Mapping zwischen Host- und Container-Konfiguration statt. Der Port 80 des Host wird wie folgt auf den Port 80 des Containers gemappt:
# Mapping der Ports zwischen Host und Container $ docker run -p 80:80 -it ubuntu
Docker Container anzeigen
Es können beliebig viele Docker Container parallel gestartet werden. Eine Übersicht der verfügbaren Container ist mit folgendem Befehl möglich:
# Übersicht erzeugter Docker Container $ docker container ls
Docker Images und Container verwalten
Das Laden und erzeugen von Containern kann sehr schnell unübersichtlich werden. Daher ist es wichtig regelmäßig aufzuräumen und nicht mehr benötigte Image und Container zu entfernen bzw. zu löschen. Jeder Container durchläuft den Docker Lifecycle wie in der Abbildung zu sehen.
Nachdem ein Docker Image erzeugt wurde, kann dieses für den Start eines Containers verwendet werden. Wie oben bereits beschrieben, kann ein Container auch direkt über den run-Befehl gestartet werden. Dieser lädt ein fertiges Image aus dem Docker Hub und führt es aus.
Docker Container besitzen einen Lebenszyklus, der über eine Reihe von Befehlen durchlaufen werden kann. Das Stoppen eines Containers erfolgt mit stop und führt zur sofortigen Beendigung des Containers:
# Container stoppen $ docker stop ubuntuContainer
Dabei ist zu beachten, dass Änderungen nur innerhalb eines Docker Container stattfinden. Gespeicherte Daten oder nachgeladene Pakete und Installationen sind nach Beendigung des Containers nicht mehr verfügbar und können standardmäßig nicht in andere Container oder externe Verzeichnisse gespeichert werden.
Um einen Container temporär zu pausieren, wird der Befehl pause verwendet. Das Pausieren kann mit dem Befehl unpause aufgehoben werden:
# Container pausieren $ docker pause ubuntuContainer # Pausierung aufheben $ docker unpause ubuntuContainer
Gestoppte und pausierte Container existieren weiterhin in der Docker Umgebung und belegen Speicherplatz. Um diesen wieder freizugeben, müssen nicht mehr benötigte Container gelöscht werden. Dies kann über den Befehl rm bewirkt werden:
# Container löschen $ docker rm ubuntuContainer # Löschen erzwingen $ docker rm -f ubuntuContainer
Um ein Docker Image dauerhaft von der Festplatte zu löschen, wird der Parameter rmi <Image Name> genutzt:
# Image löschen $ docker rmi assistant