Docker Client und Server verstehen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker hat die Softwareentwicklung und -bereitstellung revolutioniert. In diesem umfassenden Tutorial tauchen wir tief in die Grundlagen von Docker ein und untersuchen den Docker-Client und -Server detailliert. Am Ende dieser Anleitung verfügen Sie über ein fundiertes Verständnis dafür, wie Sie die Leistungsfähigkeit von Docker nutzen können, um Ihre Entwicklungs- und Bereitstellungsprozesse zu optimieren.

Einführung in Docker-Grundlagen

Was ist Docker?

Docker ist eine Open-Source-Plattform, die Entwicklern ermöglicht, Anwendungen in einer containerisierten Umgebung zu erstellen, bereitzustellen und auszuführen. Container sind leichte, eigenständige und ausführbare Softwarepakete, die alles enthalten, was zum Ausführen einer Anwendung benötigt wird, einschließlich Code, Laufzeitumgebung, Systemtools und Bibliotheken.

Vorteile von Docker

  1. Konsistenz: Docker stellt sicher, dass Anwendungen unabhängig von der zugrunde liegenden Infrastruktur auf dieselbe Weise ausgeführt werden.
  2. Skalierbarkeit: Docker-Container lassen sich leicht skalieren, um der sich ändernden Nachfrage gerecht zu werden.
  3. Effizienz: Docker-Container sind leichter und effizienter als herkömmliche virtuelle Maschinen, da sie das Host-Betriebssystem gemeinsam nutzen.
  4. Portabilität: Docker-Container lassen sich problemlos zwischen verschiedenen Umgebungen wie Entwicklung, Test und Produktion verschieben.

Docker-Architektur

Die Docker-Architektur besteht aus zwei Hauptkomponenten:

graph LR A[Docker Client] -- API --> B[Docker Daemon] B[Docker Daemon] -- API --> C[Docker Registry]
  1. Docker Client: Der Docker Client ist die primäre Benutzeroberfläche für die Interaktion mit Docker. Er ermöglicht Benutzern, Befehle auszuführen und Docker-Container, -Images und -Netzwerke zu verwalten.
  2. Docker Daemon: Der Docker Daemon ist der Kern des Docker-Systems. Er ist für die Verwaltung von Docker-Containern, -Images und -Netzwerken verantwortlich.
  3. Docker Registry: Der Docker Registry ist ein Repository zum Speichern und Verteilen von Docker-Images. Der beliebteste Registry ist Docker Hub, der eine breite Palette an vorkonfigurierten Images für verschiedene Anwendungen und Dienste bietet.

Erste Schritte mit Docker

Um mit Docker zu beginnen, müssen Sie den Docker Engine auf Ihrem System installieren. Sie können Docker von der offiziellen Docker-Website (https://www.docker.com/get-started) herunterladen und installieren. Nach der Installation können Sie den Docker Client verwenden, um mit dem Docker Daemon zu interagieren und mit Containern zu arbeiten.

Hier ist ein Beispiel, wie Sie einen einfachen "Hello, World!"-Container mit dem Docker Client ausführen:

docker run hello-world

Dieser Befehl zieht das "hello-world"-Image aus dem Docker Registry, erstellt einen neuen Container und führt die "hello-world"-Anwendung innerhalb des Containers aus.

Der Docker Client erkunden

Der Docker Client verstehen

Der Docker Client ist die primäre Schnittstelle zur Interaktion mit dem Docker Daemon. Er ermöglicht es Benutzern, Befehle auszuführen und Docker-Container, -Images und -Netzwerke zu verwalten. Der Docker Client kommuniziert mit dem Docker Daemon über eine RESTful API.

Häufige Docker Client-Befehle

Hier sind einige der häufigsten Docker Client-Befehle:

Befehl Beschreibung
docker run Erstellt und führt einen neuen Container aus einem angegebenen Image aus
docker build Erstellt ein neues Docker Image aus einer Dockerfile
docker pull Zieht ein Image aus einem Docker Registry herunter
docker push Schiebt ein Image in ein Docker Registry
docker ps Listet alle laufenden Container
docker stop Stoppt einen laufenden Container
docker rm Entfernt einen Container
docker images Listet alle lokalen Docker Images
docker rmi Entfernt ein Docker Image

Docker Client-Optionen erkunden

Der Docker Client unterstützt eine Vielzahl von Optionen und Flags, die verwendet werden können, um sein Verhalten anzupassen. Einige gängige Optionen umfassen:

  • -d: Führt den Container im detachierten Modus (im Hintergrund) aus
  • -p: Mapt einen Containerport auf einen Hostport
  • -v: Mount eines Hostverzeichnisses als Volume im Container
  • -e: Legt Umgebungsvariablen im Container fest
  • --name: Weist dem Container einen Namen zu

Hier ist ein Beispiel, wie man einen Nginx Webserver in einem Docker Container mit dem Docker Client ausführt:

docker run -d -p 80:80 --name my-nginx nginx

Dieser Befehl wird Folgendes tun:

  1. Einen neuen Container aus dem "nginx" Image erstellen
  2. Den Container im detachierten Modus (-d) ausführen
  3. Den Containerport 80 auf den Hostport 80 mappen (-p 80:80)
  4. Dem Container den Namen "my-nginx" zuweisen (--name my-nginx)

Docker Client-Ausgabe erkunden

Der Docker Client liefert detaillierte Ausgaben für verschiedene Befehle, die hilfreich sein können, um den Zustand Ihrer Docker Umgebung zu verstehen. Zum Beispiel kann der Befehl docker ps verwendet werden, um alle laufenden Container zusammen mit ihrem Status, Ports und anderen Informationen aufzulisten.

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f4a2a2b9d1f nginx "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:80- my-nginx > 80/tcp

Diese Ausgabe zeigt, dass der Container "my-nginx" läuft und auf Port 80 des Hostsystems lauscht.

Docker-Server beherrschen

Der Docker Daemon verstehen

Der Docker Daemon ist der Kern des Docker-Systems. Er ist verantwortlich für die Verwaltung von Docker-Containern, -Images und -Netzwerken. Der Docker Daemon läuft im Hintergrund und lauscht auf Docker API-Anfragen vom Docker Client.

Docker Daemon-Konfiguration

Der Docker Daemon kann mit verschiedenen Optionen und Einstellungen konfiguriert werden. Diese Einstellungen können in der Docker Daemon-Konfigurationsdatei, typischerweise unter /etc/docker/daemon.json, angegeben werden.

Hier ist ein Beispiel für eine Docker Daemon-Konfigurationsdatei:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  },
  "storage-driver": "overlay2",
  "dns": ["8.8.8.8", "8.8.4.4"]
}

Diese Konfiguration setzt den Log-Treiber auf "json-file", begrenzt die maximale Größe und Anzahl der Log-Dateien, setzt den Storage-Treiber auf "overlay2" und konfiguriert die DNS-Server auf die öffentlichen DNS-Server von Google.

Docker Daemon-Ereignisse

Der Docker Daemon sendet verschiedene Ereignisse, die verwendet werden können, um Docker-Container, -Images und -Netzwerke zu überwachen und zu verwalten. Diese Ereignisse können mit dem Befehl docker events abgerufen werden.

Hier ist ein Beispiel, wie die neuesten Ereignisse vom Docker Daemon angezeigt werden:

docker events
2023-04-24T12:34:56.789012345Z container create 3f4a2a2b9d1f my-nginx
2023-04-24T12:34:56.789012345Z container start 3f4a2a2b9d1f my-nginx
2023-04-24T12:34:56.789012345Z container attach 3f4a2a2b9d1f my-nginx

Diese Ausgabe zeigt, dass ein neuer Container mit dem Namen "my-nginx" erstellt, gestartet und angehängt wurde.

Docker Daemon-Plugins

Der Docker Daemon unterstützt eine Vielzahl von Plugins, die verwendet werden können, um seine Funktionalität zu erweitern. Diese Plugins können verwendet werden, um Docker mit anderen Systemen zu integrieren, wie z. B. Storage-Backends, Netzwerkprovidern und Logging-Diensten.

Hier ist ein Beispiel, wie das Plugin docker-volume-azure installiert und konfiguriert wird, das es ermöglicht, Azure Blob Storage als Volume-Treiber für Docker-Container zu verwenden:

## Installation des Plugins

## Konfiguration des Plugins

Sobald das Plugin installiert und konfiguriert ist, können Sie es verwenden, um Docker Volumes zu erstellen und zu verwalten, die von Azure Blob Storage unterstützt werden.

Zusammenfassung

Docker hat die Art und Weise, wie wir Anwendungen erstellen, versenden und ausführen, revolutioniert. In diesem Tutorial haben wir die Kernkomponenten von Docker, den Client und den Server, erkundet und Ihnen das Wissen vermittelt, um das volle Potenzial dieser leistungsstarken Containerisierungstechnologie zu nutzen. Mit einem tieferen Verständnis der inneren Funktionsweise von Docker können Sie nun souverän im Docker-Ökosystem navigieren und Ihre Softwareentwicklungs- und Bereitstellungsabläufe optimieren.