Einführung
Dieses umfassende Docker-Tutorial bietet Entwicklern und IT-Experten grundlegende Kenntnisse über Containertechnologie. Erfahren Sie, wie Sie Docker unter Ubuntu einrichten, die Kernkonzepte verstehen und Containerisierung für eine konsistente Anwendungsbereitstellung in verschiedenen Computing-Umgebungen nutzen.
Docker-Grundlagen
Einführung in die Docker-Technologie
Docker ist eine leistungsstarke Plattform für Containertechnologie, die die Softwarebereitstellung und Virtualisierung revolutioniert. Als Open-Source-Tool ermöglicht Docker Entwicklern, Anwendungen konsistent in verschiedenen Computing-Umgebungen zu verpacken, zu verteilen und auszuführen.
Kernkonzepte von Docker
Was ist Docker?
Docker ist eine leichte Virtualisierungstechnologie, die es Entwicklern ermöglicht, Anwendungen mithilfe von Containern zu erstellen, bereitzustellen und auszuführen. Im Gegensatz zu traditionellen virtuellen Maschinen teilen Container den Kernel des Hostsystems, was sie effizienter und schneller zum Starten macht.
Containerarchitektur
graph TD
A[Docker Engine] --> B[Container Runtime]
A --> C[Docker Images]
B --> D[Anwendungskontaner]
C --> D
Wichtige Docker-Komponenten
| Komponente | Beschreibung | Zweck |
|---|---|---|
| Docker Engine | Kerndatenumgebung | Verwaltet den Containerlebenszyklus |
| Docker Image | schreibgeschütztes Template | Definiert die Containerkonfiguration |
| Docker Container | ausführbare Instanz | Führt die Anwendung aus |
Installation unter Ubuntu 22.04
## Paketindex aktualisieren
sudo apt update
## Abhängigkeiten installieren
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Offiziellen GPG-Schlüssel von Docker hinzufügen
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Stable-Repository einrichten
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Docker Engine installieren
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Grundlegende Docker-Befehle
## Docker-Version überprüfen
docker --version
## Docker-Installation verifizieren
docker run hello-world
## Laufende Container auflisten
docker ps
## Alle Container auflisten
docker ps -a
Vorteile von Docker
Docker bietet erhebliche Vorteile für die moderne Softwareentwicklung:
- Konsistente Umgebung zwischen Entwicklung und Produktion
- Schnellere Anwendungsbereitstellung
- Verbesserte Ressourcenauslastung
- Vereinfachte Abhängigkeitsverwaltung
- Verbesserte Skalierbarkeit und Portabilität
Docker-Images erstellen
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 Anwendung erforderlich sind.
Dockerfile-Grundlagen
Ein Dockerfile ist eine Textdatei, die Anweisungen zum Erstellen eines Docker-Images enthält. Jede Anweisung erstellt eine neue Schicht im Image.
Dockerfile-Struktur
graph TD
A[Basis-Image] --> B[Abhängigkeiten installieren]
B --> C[Anwendungscode kopieren]
C --> D[Umgebungsvariablen setzen]
D --> E[Startbefehl definieren]
Häufige Dockerfile-Anweisungen
| Anweisung | Zweck | Beispiel |
|---|---|---|
| FROM | Basis-Image angeben | FROM ubuntu:22.04 |
| RUN | Befehle ausführen | RUN apt-get update |
| COPY | Dateien in das Image kopieren | COPY ./app /application |
| WORKDIR | Arbeitsverzeichnis festlegen | WORKDIR /application |
| CMD | Standardbefehl definieren | CMD ["python", "app.py"] |
Erstellen eines einfachen Python-Webapp-Images
Beispiel-Dockerfile
## Offizielles Python-Laufzeit-Image als Basis verwenden
FROM python:3.9-slim
## Arbeitsverzeichnis festlegen
WORKDIR /app
## requirements.txt-Datei kopieren
COPY requirements.txt .
## Abhängigkeiten installieren
RUN pip install --no-cache-dir -r requirements.txt
## Anwendungscode kopieren
COPY . .
## Port freigeben
EXPOSE 5000
## Startbefehl definieren
CMD ["python", "app.py"]
Docker-Image erstellen
## Image mit Tag erstellen
docker build -t hello-world-app .
## Lokale Images auflisten
docker images
## Erstelltes Image ausführen
docker run -p 5000:5000 hello-world-app
Befehle zur Imageverwaltung
## Bestimmtes Image entfernen
docker rmi hello-world-app
## Alle ungenutzten Images entfernen
docker image prune
## Image von Docker Hub herunterladen
docker pull ubuntu:22.04
Best Practices
- Minimale Basis-Images verwenden
- Anzahl der Schichten minimieren
- Unnötige Pakete vermeiden
- Mehrstufige Builds für kleinere Images verwenden
- Build-Cache effizient nutzen
Container-Verwaltung
Übersicht über den Container-Lebenszyklus
Docker-Container haben einen definierten Lebenszyklus mit mehreren Zuständen, von der Erstellung bis zur Beendigung. Das Verständnis dieser Zustände ist entscheidend für eine effektive Containerverwaltung.
stateDiagram-v2
[*] --> Created
Created --> Running
Running --> Paused
Paused --> Running
Running --> Stopped
Stopped --> Removed
Removed --> [*]
Grundlegende Container-Operationen
Container-Verwaltungsbefehle
| Befehl | Funktion | Beispiel |
|---|---|---|
| docker create | Container erstellen | docker create nginx |
| docker start | Container starten | docker start container_id |
| docker stop | Laufenden Container stoppen | docker stop container_id |
| docker restart | Container neu starten | docker restart container_id |
| docker rm | Container entfernen | docker rm container_id |
Container ausführen
## Container im Vordergrund ausführen
docker run nginx
## Container im Hintergrund ausführen
docker run -d nginx
## Container mit Portweiterleitung ausführen
docker run -p 8080:80 nginx
## Container mit benutzerdefiniertem Namen ausführen
docker run --name web-server nginx
Container-Inspektion und -Überwachung
## Laufende Container auflisten
docker ps
## Alle Container auflisten
docker ps -a
## Container-Logs anzeigen
docker logs container_id
## Containerdetails anzeigen
docker inspect container_id
## Container-Ressourcenverbrauch überwachen
docker stats
Container-Netzwerk
## Docker-Netzwerke auflisten
docker network ls
## Benutzerdefiniertes Netzwerk erstellen
docker network create mynetwork
## Container mit Netzwerk verbinden
docker network connect mynetwork container_id
Erweiterte Container-Verwaltung
Container-Ressourcenlimits
## CPU und Speicher begrenzen
docker run -d \
--cpus="1.5" \
--memory="512m" \
nginx
Container-Skalierung
## Mehrere Container-Instanzen erstellen
docker run -d -p 8001:80 nginx
docker run -d -p 8002:80 nginx
docker run -d -p 8003:80 nginx
Container-Bereitstellungsstrategien
Verwaltung persistenter Daten
## Volume erstellen
docker volume create myvolume
## Volume an Container mounten
docker run -v myvolume:/app/data nginx
Umgebungskonfiguration
## Umgebungsvariablen setzen
docker run -e DATABASE_URL=localhost nginx
Zusammenfassung
Docker revolutioniert die Softwareentwicklung, indem es leichte, portablen Container ermöglicht, die die Anwendungsbereitstellung vereinfachen. Durch das Beherrschen der Kernkomponenten, des Installationsvorgangs und der grundlegenden Befehle von Docker können Entwickler effizientere, skalierbare und reproduzierbare Softwareumgebungen mit minimalem Overhead und maximaler Flexibilität erstellen.



