Wie man Docker-Container verwendet

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
Sie können auch auf der Docker Hub-Website nach Paketen suchen, wenn Sie lieber Ihren Webbrowser verwenden.

Um das Image auf Ihr System herunterzuladen, führen Sie den folgenden Befehl aus:
docker image pull httpdBestätigen Sie, dass Sie Ihr neues Image korrekt zu Ihrem System hinzugefügt haben, indem Sie den images-Unterbefehl verwenden:
docker images
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-imageErstellen Sie eine neue Dockerfile mit Ihrem bevorzugten Texteditor:
nano ./DockerfileFügen Sie die folgenden Zeilen Code in Ihre neue Dockerfile ein:
FROM nginx
COPY sample-site /usr/share/nginx/htmlErstellen 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
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-serverFü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-imageBestätigen Sie, dass Ihr neues Docker-Image in Ihrem System vorhanden ist, indem Sie docker images ausführen.

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 httpdObwohl 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 httpdDer 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 httpdAndererseits 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
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 -aUm einen laufenden Container auszuschalten, verwenden Sie den stop-Unterbefehl gefolgt von der Container-ID oder dem Namen Ihres Docker-Containers:
docker stop my-http-serverSie können jeden Container, den Sie gestoppt haben, erneut starten, indem Sie den start-Unterbefehl erneut ausführen:
docker start my-http-serverNebenbei 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.

Führen Sie den pause-Unterbefehl gefolgt vom Namen des Containers aus, den Sie vorübergehend anhalten möchten:
docker pause my-http-serverSie können einen angehaltenen Prozess wieder aufnehmen, indem Sie den unpause-Unterbefehl ausführen:
docker unpause my-http-serverUm einen fehlerhaften Prozess zu stoppen, führen Sie den kill-Unterbefehl gefolgt vom Namen Ihres Containers aus:
docker kill my-http-serverWie 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-serverDies 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-serverDrucken 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-serverSie 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
Ä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-serverDas --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
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:/tmpManchmal 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/bashJetzt könnten Sie zum Beispiel “index.html” bearbeiten und eine Homepage für die Website innerhalb erstellen.

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

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-serverJetzt entfernen Sie den Container mit dem rm-Unterbefehl:
docker rm my-http-serverBestätigen Sie, dass Sie Ihren alten Docker-Container ordnungsgemäß gelöscht haben, indem Sie docker ps -a ausführen.

Löschen Sie Ihr ursprüngliches Docker-Image aus Ihrer Docker-Bereitstellung:
docker rmi my-new-server-image
Überprüfen Sie, ob Sie Ihr ursprüngliches Docker-Image ordnungsgemäß entfernt haben, indem Sie docker images ausführen.

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.