Wie man Docker-Container verwendet

Ein Foto einer Person, die auf einem Laptop programmiert.

Container sind das Lebenselixier jeder Docker-Installation. Sie dienen als Grundlage der Docker-Plattform und ermöglichen es Ihnen, Dienste auf Ihrem Computer auszuführen, ohne sich um Abhängigkeiten und Versionskonflikte kümmern zu müssen. Hier zeigen wir Ihnen die Grundlagen zum Erstellen, Verwalten und Anpassen von Docker-Containern mit dem Docker-CLI-Tool.

Inhaltsverzeichnis

  • Wie man ein Docker-Image findet und herunterlädt
  • Wie man einen Docker-Container startet und stoppt
  • Wie man einen Docker-Container inspiziert
  • Wie man einen Docker-Container anpasst
  • Wie man Docker-Container und -Images löscht

Hinweis: Beginnen Sie, indem Sie zuerst Docker auf Ihrem Linux-System installieren.

Wie man ein Docker-Image findet und herunterlädt

Docker-Container sind eine spezielle Art von Softwareumgebung, die es Ihnen ermöglicht, Programme getrennt vom Rest Ihres ursprünglichen Systems auszuführen. Um dies zu erreichen, verwendet Docker “Software-Images”. Dies sind statische Kopien von Programmen, die als Basis dienen, von der aus ein Container startet.

Diese Unterscheidung zwischen Image und Container ermöglicht es Ihnen, Ihre Software auf jede notwendige Weise neu zu erstellen und anzupassen. Zum Beispiel können Sie ein Image wie “httpd” haben, aber daraus zwei verschiedene Container erstellen: “website1” und “website2”.

Der einfachste Weg, ein neues Docker-Image zu suchen, ist die Verwendung des search-Unterbefehls:

docker search httpd

Ein Terminal, das das httpd-Docker-Image aus dem CLI-Tool hervorhebt.

Sie können auch auf der Docker Hub-Website nach Paketen suchen, wenn Sie lieber Ihren Webbrowser verwenden.

Ein Screenshot, der das httpd-Docker-Image von der Docker Hub-Website zeigt.

Um das Image auf Ihr System herunterzuladen, führen Sie den folgenden Befehl aus:

docker image pull httpd

Bestätigen Sie, dass Sie Ihr neues Image korrekt zu Ihrem System hinzugefügt haben, indem Sie den images-Unterbefehl verwenden:

docker images

Ein Terminal, das das installierte httpd-Docker-Image auf dem System hervorhebt.

Erstellen eines neuen Images mit Dockerfiles

Neben dem Herunterladen vorgefertigter Images von Docker Hub können Sie Images direkt über die Docker-CLI erstellen. Dies ist nützlich, wenn Sie entweder benutzerdefinierte Versionen vorhandener Softwarepakete erstellen oder neue Apps nach Docker portieren möchten.

Um dies zu tun, erstellen Sie zunächst einen Ordner in Ihrem Home-Verzeichnis für Ihre Build-Dateien:

mkdir ~/my-docker-image && cd ~/my-docker-image

Erstellen Sie eine neue Dockerfile mit Ihrem bevorzugten Texteditor:

nano ./Dockerfile

Fügen Sie die folgenden Zeilen Code in Ihre neue Dockerfile ein:

FROM nginx  
COPY sample-site /usr/share/nginx/html

Erstellen Sie einen Ordner “sample-site” und kopieren Sie entweder eine grundlegende HTML-Website hinein oder erstellen Sie eine:

mkdir ./sample-site  
cp ~/index.html ./sample-site/

Speichern Sie Ihre neue Dockerfile und führen Sie dann den folgenden Befehl aus, um sie auf Ihrem System zu erstellen:

docker build -t custom-nginx .

Überprüfen Sie, ob Ihr neues Docker-Image in Ihrer Liste der Docker-Images vorhanden ist:

docker images

Ein Terminal, das das benutzerdefinierte Image, das aus dem Build-Unterbefehl generiert wurde, hervorhebt.

Erstellen eines neuen Images mit vorhandenen Containern

Das Docker-CLI-Tool kann auch neue Images aus den Containern erstellen, die derzeit in Ihrem System vorhanden sind. Dies ist nützlich, wenn Sie bereits an einer vorhandenen Umgebung arbeiten und ein neues Image aus Ihrem aktuellen Setup erstellen möchten.

Um dies zu tun, stellen Sie sicher, dass Ihr Container derzeit nicht läuft:

docker stop my-http-server

Führen Sie den commit-Unterbefehl gefolgt vom Namen Ihres Containers aus und geben Sie dann den Namen Ihres neuen Docker-Images an:

docker commit my-http-server my-new-server-image

Bestätigen Sie, dass Ihr neues Docker-Image in Ihrem System vorhanden ist, indem Sie docker images ausführen.

Ein Terminal, das das neue benutzerdefinierte Image aus einem Docker-Container zeigt, das im System installiert ist.

Wie man einen Docker-Container startet und stoppt

Mit Ihrem Docker-Image bereit können Sie es jetzt verwenden, um Ihren ersten Container zu erstellen. Verwenden Sie dazu den run-Unterbefehl gefolgt vom Namen des Images, das Sie ausführen möchten:

docker run httpd

Obwohl dies funktioniert, um Ihren ersten Docker-Container zu starten, wird auf diese Weise Ihre aktuelle Shell-Sitzung übernommen. Um Ihren Container im Hintergrund auszuführen, fügen Sie das -d-Flag nach dem run-Unterbefehl hinzu:

docker run -d httpd

Der run-Unterbefehl kann auch eine Reihe zusätzlicher Flags annehmen, die das Verhalten Ihres neuen Docker-Containers ändern können. Zum Beispiel ermöglicht das --name-Flag, einen anpassbaren Namen für Ihren Container hinzuzufügen:

docker run -d --name=my-http-server httpd

Andererseits können Sie das --publish-Flag verwenden, um den Netzwerkport umzuleiten, über den Sie auf Ihren Docker-Container zugreifen können. Dies ist hauptsächlich nützlich, wenn Sie nicht möchten, dass Ihr Container einen privilegierten Port übernimmt:

docker run -d --name=my-http-server --publish 8080:80 httpd

Ein Screenshot, der einen Webbrowser zeigt, der die von dem benutzerdefinierten Docker-Container gehostete Website öffnet.

Sie können alle derzeit laufenden Docker-Container in Ihrem System überprüfen, indem Sie den folgenden Befehl ausführen:

docker ps

Ähnlich wie der run-Unterbefehl kann auch ps eine Reihe von Flags annehmen, die das Verhalten ändern. Um beispielsweise die Container anzuzeigen, die derzeit nicht laufen, verwenden Sie das -a-Flag:

docker ps -a

Um einen laufenden Container auszuschalten, verwenden Sie den stop-Unterbefehl gefolgt von der Container-ID oder dem Namen Ihres Docker-Containers:

docker stop my-http-server

Sie können jeden Container, den Sie gestoppt haben, erneut starten, indem Sie den start-Unterbefehl erneut ausführen:

docker start my-http-server

Nebenbei bemerkt: Lernen Sie die Grundlagen des Webhostings mit Docker, indem Sie eine einfache Website mit darkhttpd ausführen.

Pausieren und Töten eines Docker-Containers

Das Docker-CLI-Tool ermöglicht es Ihnen auch, einen laufenden Containerprozess vorübergehend zu pausieren und zu beenden. Dies kann nützlich sein, wenn Sie ein Problem mit Ihrer Docker-Konfiguration beheben und einen fehlerhaften Container isolieren oder stoppen möchten.

Beginnen Sie mit dem Ausführen von docker ps, um alle laufenden Container im System aufzulisten.

Finden Sie entweder die ID oder den Namen des Containers, den Sie verwalten möchten.

Ein Terminal, das den benutzerdefinierten Docker-Container zeigt, der derzeit im System läuft.

Führen Sie den pause-Unterbefehl gefolgt vom Namen des Containers aus, den Sie vorübergehend anhalten möchten:

docker pause my-http-server

Sie können einen angehaltenen Prozess wieder aufnehmen, indem Sie den unpause-Unterbefehl ausführen:

docker unpause my-http-server

Um einen fehlerhaften Prozess zu stoppen, führen Sie den kill-Unterbefehl gefolgt vom Namen Ihres Containers aus:

docker kill my-http-server

Wie man einen Docker-Container inspiziert

Die Kenntnis der detaillierten Informationen über Ihren Container ist ein wesentlicher Bestandteil der Aufrechterhaltung der Gesundheit Ihres Docker-Stacks. Es ermöglicht Ihnen, potenzielle Probleme schnell zu erkennen, und kann den Unterschied zwischen dem Beheben und dem Neuanlegen Ihrer gesamten Bereitstellung ausmachen.

Um einen Überblick über Ihren Docker-Container zu erhalten, führen Sie den inspect-Unterbefehl aus:

docker inspect my-http-server

Dies wird eine lange JSON-Zeichenfolge ausgeben, die den aktuellen Zustand Ihres gesamten Containers beschreibt. Sie können dies entweder eingrenzen, indem Sie die Ausgabe an jq weiterleiten oder das integrierte -f-Flag gefolgt von dem JSON-Objekt verwenden, das Sie drucken möchten:

docker inspect -f {{.Name}} my-http-server

Drucken von Container-Logs im Terminal

Darüber hinaus können Sie auch die Protokolle eines derzeit laufenden Docker-Containers verfolgen und drucken. Dies kann nützlich sein, wenn Sie überprüfen möchten, wie Ihr Dienst derzeit funktioniert und die Ausgabe sehen möchten, die er an STDOUT zurückgibt.

Um dies zu tun, führen Sie den logs-Unterbefehl gefolgt vom Namen Ihres Containers aus:

docker logs my-http-server

Sie können auch den logs-Unterbefehl mit dem --follow-Flag ausführen, um ein kontinuierliches Protokoll Ihres Docker-Dienstes zu erstellen. Dies ist ähnlich wie das Ausführen von tail -f am Ende einer UNIX-Pipeline:

docker logs --follow my-http-server

Ein Terminal, das die kontinuierlichen Protokolle für einen Docker-Container zeigt.

Ähnlich wie bei anderen Unterbefehlen können Sie auch verschiedene Flags hinzufügen, um die Ausgabe der Protokolle Ihres Docker-Containers anzupassen. Zum Beispiel fügt das --timestamps-Flag einen detaillierten Zeitstempel für jede Nachricht hinzu, die Ihr Container an sein STDOUT sendet:

docker logs --timestamps my-http-server

Das --details-Flag druckt sogar die Umgebungsvariablen, die Sie für Ihren aktuellen Docker-Container festgelegt haben. In der Zwischenzeit ermöglicht das --since-Flag, nur Protokolle anzuzeigen, die nach einem bestimmten Zeitpunkt aufgetreten sind:

docker logs --details --since 8m my-http-server

Ein Terminal, das eine detailliertere Protokollausgabe von einem derzeit laufenden Docker-Container zeigt.

Wie man einen Docker-Container anpasst

Im Kern ist ein Docker-Container eine kleine, abgespeckte Version von Linux, die auf Ihrem aktuellen System läuft. Das bedeutet, dass es, ähnlich wie bei einer virtuellen Maschine, möglich ist, auf die Daten innerhalb Ihres Containers zuzugreifen und sie abzurufen.

Um eine lokale Datei von Ihrem Host-Computer in den Container zu kopieren, führen Sie den cp-Unterbefehl aus:

docker cp ~/my-file my-http-server:/tmp

Manchmal müssen Sie auch “in” Container “eintreten”, indem Sie eine Shell innerhalb dieser öffnen. Auf diese Weise können Sie Dateien bearbeiten, Binärdateien installieren und sie nach Ihren Bedürfnissen anpassen:

docker exec -it my-http-server /bin/bash

Jetzt könnten Sie zum Beispiel “index.html” bearbeiten und eine Homepage für die Website innerhalb erstellen.

Ein Terminal, das eine HTML-Datei zeigt, die in die Root-Shell eines Docker-Containers kopiert wurde.

Um die Shell des Containers zu verlassen, drücken Sie entweder Ctrl + D oder führen Sie exit im Terminal aus.

Ein Terminal, das den Exit-Befehl aus der Root-Shell des Docker-Containers hervorhebt.

Gut zu wissen: Lernen Sie, wie man einen bestehenden Docker-Container auf ein neues System verschiebt.

Wie man Docker-Container und -Images löscht

Das Entfernen ungenutzter Docker-Container und -Images ist ein wichtiger Teil der allgemeinen Wartung Ihrer Bereitstellung. Dadurch können Sie unnötige Dateien von Ihrem Server entfernen und langfristig Speicherplatz sparen.

Bevor Sie einen Container löschen, stellen Sie sicher, dass Sie ihn zuerst gestoppt haben:

docker stop my-http-server

Jetzt entfernen Sie den Container mit dem rm-Unterbefehl:

docker rm my-http-server

Bestätigen Sie, dass Sie Ihren alten Docker-Container ordnungsgemäß gelöscht haben, indem Sie docker ps -a ausführen.

Ein Terminal, das alle verfügbaren Docker-Container einschließlich der derzeit nicht laufenden zeigt.

Löschen Sie Ihr ursprüngliches Docker-Image aus Ihrer Docker-Bereitstellung:

docker rmi my-new-server-image

Ein Terminal, das die Ausgabe des Löschens eines Docker-Images aus dem System hervorhebt.

Überprüfen Sie, ob Sie Ihr ursprüngliches Docker-Image ordnungsgemäß entfernt haben, indem Sie docker images ausführen.

Ein Terminal, das die aktualisierte Liste der Docker-Images zeigt.

Zu lernen, wie man Docker-Container erstellt, verwaltet und entfernt, ist nur ein Teil dessen, was Sie mit Ihrem Linux-Server tun können. Erkunden Sie die tiefere Welt der Linux-Systemadministration, indem Sie einen Server und ein Docker-Container-Hub mit XPipe hosten.

Bildnachweis: Shamin Haky über Unsplash. Alle Änderungen und Screenshots von Ramces Red.