Einführung
Dieses umfassende Docker-Tutorial bietet Entwicklern und Systemadministratoren eine praktische Anleitung zum Verständnis, Erstellen und Verwalten von Docker-Containern. Vom grundlegenden Installieren bis hin zur fortgeschrittenen Verwaltung des Container-Lebenszyklus behandelt das Tutorial essentielle Konzepte und Techniken zur effektiven Nutzung der Containerisierungstechnologie.
Grundlagen von Docker-Containern
Was sind Docker-Container?
Docker-Container stellen ein leichtgewichtiges, eigenständiges und ausführbares Softwarepaket dar, das alles enthält, was zum Ausführen einer Anwendung benötigt wird: Code, Laufzeitumgebung, Systemtools, Bibliotheken und Einstellungen. Die Containerisierungstechnologie ermöglicht es Entwicklern, konsistente Umgebungen über verschiedene Computing-Plattformen hinweg zu erstellen.
Kernkonzepte von Containern
Container bieten im Vergleich zu traditionellen virtuellen Maschinen Isolation und Effizienz, indem sie den Kernel des Hostsystems gemeinsam nutzen, während sie separate Benutzerbereiche beibehalten.
graph TD
A[Host-Betriebssystem] --> B[Docker Engine]
B --> C[Container 1]
B --> D[Container 2]
B --> E[Container 3]
Installation und Einrichtung
Um Docker unter Ubuntu 22.04 zu installieren, verwenden Sie die folgenden Befehle:
sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Grundlegende Docker-Befehle
| Befehl | Beschreibung |
|---|---|
| docker run | Erstellen und Starten eines neuen Containers |
| docker ps | Anzeigen der laufenden Container |
| docker images | Anzeigen der verfügbaren Container-Images |
| docker stop | Stoppen eines laufenden Containers |
Erstellen Ihres ersten Containers
Beispiel für die Ausführung eines Ubuntu-Containers:
docker run -it ubuntu:latest /bin/bash
Dieser Befehl lädt das neueste Ubuntu-Image herunter und startet eine interaktive Bash-Shell innerhalb des Containers. Die Flags -it aktivieren den interaktiven Terminalmodus.
Container-Lebenszyklusverwaltung
Container können sich in verschiedenen Zuständen befinden: erstellt, ausgeführt, pausiert, gestoppt oder gelöscht. Docker bietet Befehle zur effizienten Verwaltung dieser Zustände und gewährleistet eine flexible Anwendungsbereitstellung und Ressourcennutzung.
Docker-Image und Eintrags-Punkt
Docker-Images verstehen
Docker-Images sind schreibgeschützte Vorlagen, die zum Erstellen von Containern verwendet werden. Sie enthalten den Anwendungscode, die Laufzeitumgebung, Bibliotheken, Umgebungsvariablen und Konfigurationsdateien, die zum Ausführen einer bestimmten Anwendung erforderlich sind.
graph LR
A[Dockerfile] --> B[Docker Image]
B --> C[Container-Instanz 1]
B --> D[Container-Instanz 2]
Grundlagen von Dockerfiles
Ein Dockerfile ist eine Textdatei, die Anweisungen zum Erstellen eines Docker-Images enthält:
FROM ubuntu:22.04
LABEL maintainer="your-email@example.com"
RUN apt-get update && apt-get install -y python3
WORKDIR /app
COPY . /app
ENTRYPOINT ["python3"]
CMD ["app.py"]
Befehle zum Erstellen von Images
| Befehl | Beschreibung |
|---|---|
| docker build | Erstellen eines Images aus einem Dockerfile |
| docker pull | Herunterladen eines Images von Docker Hub |
| docker push | Hochladen eines Images in einen Registry |
| docker tag | Zuweisen eines Namens und Tags zu einem Image |
Verständnis des Eintrags-Punkts
Der ENTRYPOINT definiert den primären Befehl, der bei der Start eines Containers ausgeführt wird. Er bietet zwei Modi:
## Ausführungsform (empfohlen)
ENTRYPOINT ["executable", "param1", "param2"]
## Shell-Form
ENTRYPOINT command param1 param2
Erstellen und Ausführen benutzerdefinierter Images
Beispiel zum Erstellen und Ausführen einer benutzerdefinierten Python-Anwendung:
## Erstellen des Images
docker build -t myapp:v1 .
## Ausführen des Containers
docker run myapp:v1
Verwaltung von Image-Schichten
Docker-Images bestehen aus mehreren schreibgeschützten Schichten, die jeweils einer Dockerfile-Anweisung entsprechen. Dieser geschichtete Ansatz ermöglicht eine effiziente Speicherung und schnelle Containererstellung.
Container-Bereitstellungsstrategien
Bereitstellungsmuster
Container-Bereitstellungsstrategien ermöglichen eine effiziente Skalierung, Verwaltung und Verteilung von Anwendungen über verschiedene Umgebungen hinweg.
graph TD
A[Bereitstellungsstrategien] --> B[Einzelner Host]
A --> C[Mehrere Hosts]
A --> D[Orchestrierung]
Bereitstellungsmethoden
| Strategie | Beschreibung | Anwendungsfall |
|---|---|---|
| Einzelner Container | Grundlegende Bereitstellung auf einem Host | Kleine Anwendungen |
| Replikation | Mehrere identische Container | Lastverteilung |
| Rollender Update | Graduelle Container-Ersatz | Updates ohne Ausfallzeiten |
| Blue-Green-Bereitstellung | Paralleler Umgebungswechsel | Minimales Risikobereitstellung |
Docker Compose-Konfiguration
Beispiel für eine Multi-Container-Bereitstellungs-Konfiguration:
version: "3"
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: postgres:12
environment:
POSTGRES_PASSWORD: secretpassword
Befehle zur Skalierung von Containern
## Horizontale Skalierung
docker-compose up --scale web=3
## Manuelle Containerverwaltung
docker service create --replicas 5 myapp:v1
Containernetzwerk-Konfiguration
graph LR
A[Frontend-Container] --> B[Backend-Container]
B --> C[Datenbank-Container]
Erweiterte Bereitstellungstechniken
Docker Swarm und Kubernetes bieten eine ausgereifte Container-Orchestrierung, die komplexe Bereitstellungsszenarien mit automatischer Skalierung, Selbstheilung und Lastverteilung ermöglicht.
Zusammenfassung
Docker-Container bieten eine leistungsstarke und flexible Methode zur Anwendungsbereitstellung. Entwickler können damit konsistente, isolierte Umgebungen über verschiedene Computing-Plattformen hinweg erstellen. Durch die Beherrschung der Containerverwaltung, der Installationsverfahren und der Lebenszyklusstrategien können Fachkräfte die Softwareentwicklung optimieren, die Ressourcennutzung verbessern und die Gesamteffizienz des Systems steigern.



