Schnelle Ausführung und Schließung von Docker-Containern: Ein Einsteigerleitfaden

DockerDockerBeginner
Jetzt üben

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

Einführung

Dieses Tutorial führt Sie durch den Prozess des schnellen Startens und Beendens von Docker-Containern und bietet eine umfassende Einführung in die Welt von Docker für Anfänger. Sie lernen, wie Sie Docker auf Ihrem System installieren und konfigurieren, die Grundlagen des Ausführens von Docker-Containern kennenlernen und praktische Anwendungen und Best Practices für die effektive Verwaltung Ihrer Container entdecken.

Docker verstehen: Was und Warum

Docker ist eine leistungsstarke Open-Source-Plattform, die Entwicklern und IT-Experten ermöglicht, Anwendungen in einer konsistenten und zuverlässigen Umgebung zu erstellen, bereitzustellen und auszuführen. Sie verwendet Containerisierungstechnologie, um eine Anwendung und alle ihre Abhängigkeiten in einem einzigen, portablen Container zu verpacken, wodurch sichergestellt wird, dass die Anwendung unabhängig von der zugrunde liegenden Infrastruktur auf dieselbe Weise ausgeführt wird.

Was ist Docker?

Docker ist eine Softwareplattform, die es Ihnen ermöglicht, Anwendungen in Containern zu erstellen, bereitzustellen und auszuführen. Ein Container ist eine standardisierte Softwareeinheit, die Code und alle seine Abhängigkeiten verpackt, sodass die Anwendung schnell und zuverlässig von einer Computerebene zur anderen läuft. Container sind leichtgewichtig, portabel und autark, was sie zu einer idealen Lösung für die moderne Softwareentwicklung und -bereitstellung macht.

Warum Docker verwenden?

Es gibt mehrere wesentliche Vorteile bei der Verwendung von Docker:

  1. Konsistenz: Docker stellt sicher, dass Ihre Anwendung unabhängig von der zugrunde liegenden Infrastruktur auf dieselbe Weise ausgeführt wird. Dies beseitigt das Problem "es funktioniert auf meinem Rechner", bei dem eine Anwendung auf dem Rechner eines Entwicklers einwandfrei läuft, aber in der Produktion fehlschlägt.

  2. Skalierbarkeit: Docker erleichtert die Skalierung Ihrer Anwendung durch die Ausführung mehrerer Instanzen eines Containers, entweder manuell oder automatisch.

  3. Effizienz: Container sind leichtgewichtig und verbrauchen weniger Ressourcen als virtuelle Maschinen, sodass Sie mehr Anwendungen auf derselben Hardware ausführen können.

  4. Portabilität: Docker-Container können auf jedem System ausgeführt werden, auf dem Docker installiert ist, wodurch es einfach ist, Ihre Anwendungen zwischen verschiedenen Umgebungen wie Entwicklung, Test und Produktion zu verschieben.

  5. Isolation: Jeder Docker-Container ist von den anderen isoliert, wodurch eine sichere und zuverlässige Umgebung für die Ausführung Ihrer Anwendungen bereitgestellt wird.

Docker-Architektur

Docker verwendet eine Client-Server-Architektur, bei der der Docker-Client mit dem Docker-Daemon kommuniziert, der für das Erstellen, Ausführen und Verwalten von Docker-Containern zuständig ist. Der Docker-Daemon läuft auf dem Host-Computer, und der Client kann auf demselben Computer oder einem Remote-Computer ausgeführt werden.

graph LR A[Docker Client] -- Kommuniziert mit --> B[Docker Daemon] B -- Verwaltet --> C[Docker Container] B -- Verwaltet --> D[Docker Images]

Im nächsten Abschnitt werden wir behandeln, wie Sie Docker auf Ihrem System installieren und konfigurieren.

Installation und Konfiguration von Docker auf Ihrem System

Installation von Docker unter Ubuntu 22.04

Um Docker auf Ihrem Ubuntu 22.04-System zu installieren, folgen Sie diesen Schritten:

  1. Aktualisieren Sie das Paketverzeichnis und installieren Sie die notwendigen Abhängigkeiten:
sudo apt-get update
sudo apt-get install -y \
  ca-certificates \
  curl \
  gnupg \
  lsb-release
  1. Fügen Sie den offiziellen Docker GPG-Schlüssel hinzu:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. Richten Sie das Docker-Repository ein:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Installieren Sie den Docker-Engine, containerd und Docker Compose:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. Überprüfen Sie die Installation, indem Sie das hello-world-Image ausführen:
sudo docker run hello-world

Konfiguration von Docker

Nachdem Docker installiert wurde, können Sie es an Ihre Bedürfnisse anpassen. Hier sind einige gängige Konfigurationsoptionen:

  1. Verwalten von Docker als Nicht-Root-Benutzer: Standardmäßig benötigen Docker-Befehle Root-Rechte. Um Docker-Befehle ohne sudo auszuführen, fügen Sie Ihren Benutzer zur Gruppe docker hinzu:
sudo usermod -aG docker $USER
  1. Festlegen von Standard-Docker-Daemon-Optionen: Sie können das Verhalten des Docker-Daemons anpassen, indem Sie die Datei /etc/docker/daemon.json bearbeiten. Beispielsweise, um den Standard-Log-Treiber zu ändern:
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}
  1. Konfiguration von Docker Compose: Docker Compose ist ein Werkzeug zum Definieren und Ausführen von Multi-Container-Docker-Anwendungen. Sie können das Standardverhalten von Docker Compose konfigurieren, indem Sie die Datei ~/.docker/config.json bearbeiten.

Nun, da Docker installiert und konfiguriert ist, können wir mit der Ausführung von Docker-Containern fortfahren.

Ausführung von Docker-Containern: Grundlagen

Verständnis von Docker-Images

Ein Docker-Image ist eine schreibgeschützte Vorlage, die die Anweisungen zum Erstellen eines Docker-Containers enthält. Images werden verwendet, um eine Anwendung und alle ihre Abhängigkeiten zu verpacken, um sicherzustellen, dass die Anwendung unabhängig von der zugrunde liegenden Infrastruktur auf dieselbe Weise ausgeführt wird.

Sie können Ihre eigenen Docker-Images erstellen oder vorgefertigte Images von Docker Hub verwenden, einem öffentlichen Repository von Docker-Images.

Ausführung eines Docker-Containers

Um einen Docker-Container auszuführen, verwenden Sie den Befehl docker run. Hier ist ein Beispiel für die Ausführung des Webservers nginx in einem Docker-Container:

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

Lassen Sie uns den Befehl aufschlüsseln:

  • docker run: Führt einen neuen Docker-Container aus.
  • -d: Führt den Container im detachierten Modus aus, d. h. er läuft im Hintergrund.
  • -p 80:80: Mapt Port 80 des Host-Systems auf Port 80 im Container.
  • --name my-nginx: Weist dem Container den Namen "my-nginx" zu.
  • nginx: Der Name des Docker-Images, das verwendet werden soll.

Auflistung der laufenden Container

Um eine Liste der laufenden Docker-Container anzuzeigen, verwenden Sie den Befehl docker ps:

docker ps

Dies zeigt eine Tabelle mit Informationen über die laufenden Container, einschließlich der Container-ID, des verwendeten Images, des ausgeführten Befehls, des Erstellungstermins, des Status und der Ports.

Inspektion eines laufenden Containers

Um detailliertere Informationen über einen laufenden Container zu erhalten, verwenden Sie den Befehl docker inspect:

docker inspect my-nginx

Dies gibt ein JSON-Objekt mit detaillierten Informationen über den Container aus, einschließlich seiner Konfiguration, Netzwerkeinstellungen und Ressourcenverwendung.

Im nächsten Abschnitt werden wir die Interaktion mit Docker-Containern behandeln.

Interaktion mit Docker-Containern

Zugriff auf die Container-Shell

Um auf die Shell eines laufenden Docker-Containers zuzugreifen, verwenden Sie den Befehl docker exec:

docker exec -it my-nginx bash

Dies öffnet eine interaktive Terminalsitzung innerhalb des Containers my-nginx, sodass Sie Befehle innerhalb des Containers ausführen können.

Kopieren von Dateien in und aus Containern

Sie können Dateien zwischen dem Host-System und einem Docker-Container mithilfe des Befehls docker cp kopieren:

## Kopieren einer Datei vom Host in den Container
docker cp /path/on/host my-nginx:/path/in/container

## Kopieren einer Datei vom Container auf den Host
docker cp my-nginx:/path/in/container /path/on/host

Protokollierung der Container-Ausgabe

Um die Protokolle eines laufenden Docker-Containers anzuzeigen, verwenden Sie den Befehl docker logs:

docker logs my-nginx

Dies zeigt die Standardausgabe (stdout) und die Standardfehlermeldungen (stderr) des Containers an.

Überwachung der Container-Ressourcenutzung

Sie können die Ressourcenutzung eines Docker-Containers über den Befehl docker stats überwachen:

docker stats my-nginx

Dies zeigt einen Live-Stream der CPU-, Speicher-, Netzwerk- und Festplatten-E/A-Nutzung für den Container my-nginx an.

Anfügen an einen laufenden Container

Um sich an die Standard-Eingabe-, Ausgabe- und Fehlerströme eines laufenden Docker-Containers anzuschließen, verwenden Sie den Befehl docker attach:

docker attach my-nginx

Dies verbindet Ihr Terminal mit den Standardströmen des Containers und ermöglicht Ihnen die Interaktion mit der laufenden Anwendung.

Im nächsten Abschnitt werden wir behandeln, wie Docker-Container gestoppt, gestartet und entfernt werden.

Stoppen, Starten und Entfernen von Containern

Stoppen eines laufenden Containers

Um einen laufenden Docker-Container zu stoppen, verwenden Sie den Befehl docker stop:

docker stop my-nginx

Dies stoppt den Container sauber und ermöglicht ihm, alle notwendigen Bereinigungsaufgaben durchzuführen, bevor er heruntergefahren wird.

Starten eines gestoppten Containers

Um einen gestoppten Docker-Container zu starten, verwenden Sie den Befehl docker start:

docker start my-nginx

Dies startet den Container mit derselben Konfiguration wie beim ursprünglichen Start.

Entfernen eines Containers

Um einen Docker-Container zu entfernen, verwenden Sie den Befehl docker rm:

docker rm my-nginx

Dies entfernt den Container vom System, entfernt jedoch keine zugehörigen Docker-Images.

Entfernen mehrerer Container

Sie können mehrere Container gleichzeitig entfernen, indem Sie den Befehl docker rm mit der Option -f (force) verwenden:

docker rm -f container1 container2 container3

Dies entfernt die angegebenen Container auch dann, wenn sie noch laufen.

Entfernen gestoppter Container

Um alle gestoppten Docker-Container zu entfernen, können Sie den folgenden Befehl verwenden:

docker container prune

Dies entfernt alle gestoppten Container und befreit so Speicherplatz auf Ihrem System.

Im nächsten Abschnitt werden wir einige praktische Anwendungen von Docker-Containern untersuchen.

Praktische Anwendungen von Docker-Containern

Bereitstellung von Webanwendungen

Eine der häufigsten Anwendungsfälle für Docker-Container ist die Bereitstellung von Webanwendungen. Docker ermöglicht es Ihnen, Ihre Anwendung zusammen mit ihren Abhängigkeiten in einem einzigen Container zu verpacken, der einfach in verschiedene Umgebungen wie Entwicklung, Staging und Produktion bereitgestellt werden kann.

Microservices-Architektur

Docker eignet sich hervorragend für die Entwicklung und Bereitstellung von Anwendungen, die auf einer Microservices-Architektur basieren. Jeder Microservice kann in einem separaten Container verpackt werden, was die Skalierung, Aktualisierung und Wartung einzelner Komponenten der Anwendung vereinfacht.

Continuous Integration und Continuous Deployment (CI/CD)

Docker lässt sich gut in CI/CD-Pipelines integrieren, sodass Sie Ihre Anwendungen konsistent und automatisiert erstellen, testen und bereitstellen können. Docker-Container können als Build-, Test- und Bereitstellungsziele verwendet werden.

Datenverarbeitung und -analyse

Docker-Container können verwendet werden, um Datenverarbeitungs- und Analyse-Workloads wie Batch-Verarbeitung, Stream-Verarbeitung und maschinelles Lernen auszuführen. Durch die Verpackung des gesamten Verarbeitungspipelines in einen Container wird die Konsistenz und Portabilität über verschiedene Umgebungen hinweg gewährleistet.

Entwicklungsumgebungen und Testumgebungen

Docker kann verwendet werden, um konsistente, isolierte Entwicklungsumgebungen und Testumgebungen zu erstellen. Entwickler können Docker verwenden, um ihre lokalen Entwicklungsumgebungen einzurichten, während QA-Teams Docker verwenden können, um standardisierte Testumgebungen zu erstellen.

Serverless Computing

Docker kann als Grundlage für Serverless-Computing-Plattformen verwendet werden, bei denen Anwendungen als einzelne Container bereitgestellt und skaliert werden, ohne dass die zugrunde liegende Infrastruktur verwaltet werden muss.

Internet der Dinge (IoT)

Die leichte und portable Natur von Docker macht es zu einer guten Wahl für IoT-Anwendungen, bei denen Geräte möglicherweise über begrenzte Ressourcen verfügen. Docker-Container können verwendet werden, um IoT-Anwendungen auf einer Flotte von Geräten zu verpacken und bereitzustellen.

Im nächsten Abschnitt werden wir Best Practices für die Verwaltung von Docker-Containern besprechen.

Best Practices für die Verwaltung von Docker-Containern

Verwendung von leichten Basis-Images

Verwenden Sie bei der Erstellung eigener Docker-Images leichte Basis-Images wie alpine oder scratch, um die Größe Ihrer Container zu minimieren und deren Leistung zu verbessern.

Optimierung der Dockerfile-Layers

Organisieren Sie Ihr Dockerfile so, dass Sie den Layer-Caching-Mechanismus von Docker nutzen können. Gruppieren Sie verwandte Anweisungen, um die Anzahl der Layers zu minimieren und die Buildzeiten zu verkürzen.

Verwendung von Umgebungsvariablen für die Konfiguration

Speichern Sie Konfigurationsdaten wie Datenbankverbindungszeichenfolgen oder API-Schlüssel in Umgebungsvariablen, anstatt sie in Ihrem Anwendungscode oder Dockerfile fest zu codieren.

Implementierung von Logging und Monitoring

Konfigurieren Sie Ihre Docker-Container so, dass wichtige Ereignisse und Metriken protokolliert werden, und verwenden Sie Tools wie Prometheus, Grafana oder den ELK-Stack, um den Zustand und die Leistung Ihrer Container zu überwachen.

Verwaltung von Container-Secrets

Verwenden Sie Tools wie Docker Secrets oder HashiCorp Vault, um sensible Daten wie Passwörter oder API-Schlüssel, auf die Ihre Container zugreifen müssen, sicher zu verwalten.

Automatisierung des Container-Lebenszyklus-Managements

Integrieren Sie Docker in Ihre CI/CD-Pipeline, um den Build, Test und die Bereitstellung Ihrer Container zu automatisieren. Verwenden Sie Tools wie Docker Compose, Kubernetes oder LabEx, um den Lebenszyklus Ihrer Container zu verwalten.

Absicherung Ihrer Container

Sichern Sie Ihren Docker-Daemon und Ihre Container, indem Sie bewährte Verfahren befolgen, z. B. Container als Nicht-Root-Benutzer auszuführen, schreibgeschützte Dateisysteme zu verwenden und Netzwerkrichtlinien zu implementieren.

Optimierung der Container-Ressourcenutzung

Überwachen Sie die Ressourcenverwendung Ihrer Container und optimieren Sie deren Ressourcenzuweisungen, um eine effiziente Nutzung Ihrer Infrastruktur sicherzustellen.

Aufrechterhaltung der Container-Hygiene

Entfernen und bereinigen Sie regelmäßig nicht verwendete Docker-Images und -Container, um Festplattenspeicher freizugeben und eine gesunde Docker-Umgebung zu gewährleisten.

Durch die Einhaltung dieser Best Practices können Sie Ihre Docker-Container effektiv verwalten und warten und so eine zuverlässige und effiziente Anwendungsbereitstellung und -betrieb gewährleisten.

Zusammenfassung

Am Ende dieses Tutorials "Schnelle Ausführung und Schließung von Docker-Containern: Ein Einsteigerleitfaden" verfügen Sie über ein solides Verständnis von Docker und die Fähigkeit, Docker-Container schnell auszuführen, mit ihnen zu interagieren und sie zu schließen. Sie lernen auch wertvolle Best Practices für die Verwaltung Ihrer Docker-Umgebung kennen, um Ihre Entwicklungs- und Bereitstellungsprozesse zu optimieren.