Zum Hauptinhalt springen Skip to page footer

Docker-Container verwalten: Starten, Stoppen und Überwachen mit Netzwerkkonfiguration, Umgebungsvariablen und Volumes

| Tutorial | Docker

Erfahren Sie, wie Sie mit Docker Container starten, stoppen und überwachen können. Nutzen Sie Netzwerkkonfiguration, um Container miteinander und mit externen Netzwerken zu verbinden. Setzen Sie Umgebungsvariablen, um Konfigurationswerte bereitzustellen. Verwenden Sie Volumes, um Daten persistent zu speichern und zwischen Containern auszutauschen.

Container verwalten: Starten, Stoppen und Überwachen

Mit Docker können Sie Anwendungen in so genannten Containern ausführen. Ein Container ist eine in sich geschlossene, portable Umgebung, die alles enthält, was Ihre Anwendung zum Ausführen benötigt. Docker-Container können auf dem Host-Computer gestartet, beendet, überwacht und gelöscht werden. 

Verwaltung von Containern über die CLI

Das Docker Command Line Interface (CLI) ist ein leistungsstarkes Werkzeug zur Verwaltung von Docker-Containern. Die folgenden Befehle sind nützlich, um Container zu starten, zu stoppen und zu überwachen. 

Container starten
docker run IMAGE_NAME

Der docker run-Befehl erstellt einen neuen Container aus einem Docker-Image und startet diesen. Sie können optional eine Vielzahl von Argumenten und Flags verwenden, um das Verhalten des Containers anzupassen. Einige gängige Optionen sind -d um den Container im Hintergrund zu starten, -p um Ports zwischen dem Host und dem Container zu verbinden, und --name um dem Container einen benutzerdefinierten Namen zu geben.

docker stop CONTAINER_ID

Mit dem docker stop-Befehl können Sie einen laufenden Container anhalten. Sie können entweder die ID oder den Namen des Containers verwenden, den Sie stoppen möchten.

Container überwachen
docker stats CONTAINER_ID

Der docker stats-Befehl zeigt Echtzeit-Statistiken zur CPU-, Speicher-, Netzwerk- und Festplattenauslastung für einen oder mehrere Container an. Sie können die ID oder den Namen der Container, die Sie überwachen möchten, angeben.

Überwachung der Ressourcennutzung von Containern

Docker bietet eine Vielzahl von Werkzeugen und Befehlen zur Überwachung der Container-Ressourcennutzung. Wie bereits erwähnt, ist docker stats ein nützliches Tool zur Echtzeitüberwachung der Container-Ressourcennutzung.

Ein weiteres nützliches Werkzeug ist docker inspect. Mit diesem Befehl können Sie detaillierte Informationen über Ihre Container abrufen, einschließlich ihres aktuellen Status, der verwendeten Ressourcen und der Netzwerkkonfiguration.

Mit docker logs können Sie die Ausgabe Ihrer Container sehen, was bei der Fehlersuche hilfreich sein kann. Sie können den Befehl mit der ID oder dem Namen des Containers verwenden, um dessen Protokolle anzuzeigen.

Zusätzlich zur CLI können Sie Tools wie Docker Desktop und Kitematic verwenden, um eine grafische Oberfläche zur Überwachung und Verwaltung Ihrer Docker-Container zu erhalten. Diese Tools bieten oft zusätzliche Funktionen wie das Durchsuchen und Herunterladen von Bildern aus dem Docker Hub, das Anpassen von Containereinstellungen, das Anzeigen von Echtzeit-Ressourcenstatistiken und vieles mehr. 

Docker kann in Kombination mit Orchestrierungstools wie Kubernetes oder Docker Swarm verwendet werden kann, die zusätzliche Funktionen zur Überwachung und Verwaltung von Containern auf mehreren Hosts bieten.

Dateien in Container kopieren

Um die Kommunikation zwischen dem Host-System und dem Container zu ermöglichen, erlaubt Docker das Kopieren von Dateien in und aus dem Container. Dies ist besonders nützlich, wenn die Anwendung im Container auf bestimmte Dateien auf dem Host zugreifen oder benötigte Dateien außerhalb des Containers erstellen muss. 

Kopieren von Dateien von Host zu Container

Um Dateien vom Host-System in einen Docker-Container zu kopieren, verwenden Sie den Befehl docker cp. Das allgemeine Format des Befehls ist: docker cp <Quelldatei_pfad> <Zielcontainer>:<Zielpfad>.

Beispiel: Um eine Datei namens example.txt aus dem aktuellen Verzeichnis des Hosts in den Ordner /home eines laufenden Containers mit der ID abc123 zu kopieren, würden Sie folgenden Befehl verwenden: docker cp example.txt abc123:/home.

Kopieren von Dateien von Container zu Host

Umgekehrt können Sie auch Dateien aus dem Docker-Container auf das Hostsystem kopieren. Dies kann ebenfalls mit dem docker cp Befehl erfolgen, allerdings in umgekehrter Reihenfolge von Quelle und Ziel.

Beispiel: Um eine Datei namens example.txt aus dem Ordner /home eines laufenden Containers mit der ID abc123 in das aktuelle Verzeichnis auf dem Host zu kopieren, verwenden Sie den folgenden Befehl: docker cp abc123: /home/example.txt.

Netzwerk-Konfiguration für Container

In Docker ermöglicht die Netzwerkkonfiguration die Verbindung von Containern untereinander und mit externen Netzwerken. Docker bietet verschiedene Netzwerkoptionen, um die Kommunikation zwischen Containern zu erleichtern und Containerdienste von außen zugänglich zu machen. 

Verbindung von Containern über Netzwerke

Mit Docker können Sie benutzerdefinierte Netzwerke erstellen, um sich mit Ihren Containern zu verbinden. Diese benutzerdefinierten Netzwerke bieten eine isolierte Umgebung für Ihre Container und ermöglichen ihnen, über ihren Namen zu kommunizieren. Standardmäßig erstellt Docker für jeden Container ein eigenes Netzwerk, so dass Container standardmäßig miteinander kommunizieren können.

Beim Erstellen eines benutzerdefinierten Netzwerks können Administratoren das Netzwerkmodell auswählen. Docker unterstützt drei verschiedene Netzwerkmodelle.

  • Bridge-Netzwerk: Dies ist das Standard Netzwerkmodell von Docker. Beim Bridged-Networking werden Container über eine gemeinsame Bridge-Schnittstelle miteinander verbunden. Jeder Container erhält eine eigene IP-Adresse innerhalb des Brückennetzwerks und kann über den Containernamen kommunizieren.
  • Host-Netzwerk: Beim Host Networking verwenden Container und Host den gleichen Netzwerk-Stack. Dies bedeutet, dass Container direkt auf die Netzwerkschnittstellen des Hosts zugreifen können, was die Netzwerkleistung verbessert. Dieses Modell ist jedoch nicht für isolierte Anwendungen geeignet, da der Container die gleiche IP-Adresse wie der Host hat.
  • Overlay-Netzwerk: Overlay-Netzwerke ermöglichen die Verbindung von Containern über mehrere Hosts hinweg. Sie werden verwendet, um Container in einem Swarm-Cluster zu verbinden, so dass sie unabhängig davon, auf welchem Host sie sich befinden, miteinander kommunizieren können. Overlay-Netzwerke verwenden Virtual Extensible LAN (VXLAN) für die Kommunikation zwischen den Hosts. 

Portzuordnung und Exposition von Containern

Um Container-Dienste für externe Clients verfügbar zu machen, verwendet Docker Port Mapping und Port Publishing.

Port Mapping ermöglicht es, bestimmte Ports auf dem Host bestimmten Ports im Container zuzuordnen. Dadurch können externe Clients über den Host-Port auf den Container zugreifen. Beispielsweise kann ein Webserver in einem Container Port 80 überwachen, aber Docker ordnet den Port 8080 des Hosts dem Port 80 des Containers zu. Dadurch können externe Clients über Port 8080 auf den Webserver im Container zugreifen.

Die Portzuweisung erfolgt über die Docker-Kommandozeile oder durch Angabe der Portzuweisung in einer Docker-Konfigurationsdatei. Wenn kein bestimmter Port angegeben wird, wählt Docker standardmäßig einen zufälligen freien Port auf dem Host.

Container Exposition ermöglicht den Zugriff auf Container-Dienste über das Netzwerk, ohne dass explizit Port-Mappings erstellt werden müssen. Sobald ein Container-Port verfügbar ist, kann er so konfiguriert werden, dass er auf dem Host sichtbar ist. Dadurch können andere Container im gleichen Netzwerk 

Umgebungsvariablen und Volumes

Verwendung von Umgebungsvariablen in Containern

Mit Docker können Sie Umgebungsvariablen in Ihren Containern verwenden, um Konfigurationswerte und andere Informationen bereitzustellen. Umgebungsvariablen sind dynamische Werte, die in der Umgebung des Containers definiert und zur Laufzeit von der Anwendung im Container abgerufen werden können.

Umgebungsvariablen machen Container flexibler und portabler, indem sie es dem Containerdienst ermöglichen, seine Konfiguration auf der Grundlage der bereitgestellten Umgebungsvariablen anzupassen.

Es gibt mehrere Möglichkeiten, Umgebungsvariablen in Docker zu setzen:

1. Über die Docker Befehlszeile: Umgebungsvariablen können direkt während der Ausführung des Containers mit dem docker run Befehl gesetzt werden. Beispiel:
 

docker run -e VARIABLE_NAME=wert image_name

2. Über eine Docker-Konfigurationsdatei: Umgebungsvariablen können in der Datei docker-compose.yml oder anderen Docker-Konfigurationsdateien definiert und beim Starten eines Containers verwendet werden.

3. Über die .env-Datei: Docker ermöglicht Ihnen auch die Verwendung von .env-Dateien, in denen Sie Umgebungsvariablen definieren können. Diese Datei steht beim Start des Containers als Referenz zur Verfügung.

Innerhalb des Containers kann der Anwendungscode Umgebungsvariablen abrufen, um Konfigurationswerte und andere Informationen zu verwenden. Die genaue Methode zum Abrufen von Umgebungsvariablen in Ihrem Code hängt von der Programmiersprache und dem Framework ab, die von Ihrem Container verwendet werden. 

Persistente Daten mit Volumes

Mit Docker können Sie Daten mit Hilfe von Volumes außerhalb des Containers speichern. Ein Volume ist ein Verzeichnis oder Dateisystem, das von einem oder mehreren Containern verwendet werden kann. Volumes werden verwendet, um Daten zwischen Containern auszutauschen, Daten während des gesamten Lebenszyklus eines Containers zu speichern und Daten zwischen dem Löschen und dem erneuten Erstellen eines Containers aufzubewahren.

Docker bietet zwei Arten von Volumes.

1. Named Volumes: Ein benanntes Volume ist ein eigenständiges Verzeichnis, das Docker außerhalb des Containers erstellt und verwaltet. Sie sind benannt und können in mehreren Containern verwendet werden. Benannte Volumes bieten eine einfache Möglichkeit, Daten zwischen Containern auszutauschen und persistente Daten während des gesamten Lebenszyklus des Containers zu speichern.

Ein Named Volume kann wie folgt erstellt werden :

docker volume create my_volume

Wenn Sie in Ihrem Container ein benanntes Volume verwenden, können Sie dieses Volume in das Dateisystem des Containers einbinden.

2. Bind-Mount: Ein Bind-Mount bindet ein Verzeichnis oder eine Datei vom Hostsystem direkt an den Container. Dies ermöglicht den direkten Zugriff auf die Daten auf dem Hostsystem und bietet maximale Flexibilität. Bei Bind-Mounts bleiben die Daten außerhalb des Containers, da sie nicht vom Container selbst verwaltet werden.

Ein Bind-Mount kann folgendermaßen erstellt werden  

docker run -