Docker Engine: Installation & Setup (Artikel 037)
Professionelle Installation der Docker Engine unter Ubuntu und Debian. Konfiguration des Docker-Dämons, Benutzerrechte-Management und erste Schritte mit Containern.
# Docker Engine: Container-Infrastruktur richtig aufsetzen
TL;DR / Management Summary Docker hat die Art und Weise, wie Applikationen bereitgestellt werden, revolutioniert. Während ein
apt install docker.ioschnell geht, setzen Enterprise-Umgebungen auf das offizielle Repository von Docker (CE), um immer die neuesten Security-Patches und Features zu erhalten. Wir zeigen, wie man Docker sauber installiert, den Dämon härtet und den Zugriff für Benutzer ohnesudosicher konfiguriert.
# 1. Einführung & Architektur
Der Container-Stack.
Docker ist eine Client-Server Applikation. Der Docker-Dämon (dockerd) verwaltet die Container auf dem Kernel, während das CLI (docker) die Befehle sendet.
graph TD
A[Docker CLI] -->|Unix Socket / REST API| B[Docker Daemon dockerd]
B --> C[Images local cache]
B --> D[Containers runtime]
B --> E[Network Bridge docker0]
B --> F[Volumes]
G[Registry: Docker Hub / Harbor] -->|Pull| B
# 2. Installation: Der saubere Weg
Offizielle Repositories nutzen.
# Schritt 1: Alte Versionen entfernen
sudo apt remove docker docker-engine docker.io containerd runc
# Schritt 2: Docker Repository hinzufügen
# GPG Key hinzufügen
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Repository verlinken (Beispiel Ubuntu Jammy)
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
# Schritt 3: Docker Engine installieren
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 3. Post-Installation: Best Practices
Konfiguration und Rechte.
# Docker ohne Sudo (optional aber üblich)
Vorsicht: Wer in der Gruppe docker ist, hat de facto Root-Rechte auf dem System!
sudo usermod -aG docker $USER
# Danach einmal ab- und anmelden
# Dämon Tuning (/etc/docker/daemon.json)
Konfigurieren Sie Log-Rotation, um volle Disks zu vermeiden:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"default-address-pools": [
{"base":"172.17.0.0/16","size":24}
]
}
Danach: sudo systemctl restart docker.
# 4. Day-2 Operations: Lifecycle Management
Aufräumen und Überwachen.
# Container und Images löschen
# Entfernt alles Unbenutzte (Images, Container, Networks)
docker system prune -a
# Nur unbenutzte Volumes löschen (Vorsicht: Datenverlust!)
docker volume prune
# Logs einsehen
docker logs -f <container_id_oder_name>
# 5. Troubleshooting & “War Stories”
Wenn der Wal nicht schwimmt.
# Story 1: “Der DNS-Fail im Container”
Symptom: Ein Container kann keine Server im Internet erreichen, aber der Host-Server schon.
Ursache: Docker nutzt standardmäßig die DNS-Einstellungen des Hosts. Wenn der Host nur 127.0.0.53 (systemd-resolved) nutzt, kann Docker diesen Socket nicht im Container nutzen.
Lösung: Definieren Sie feste DNS-Server in der daemon.json oder übergeben Sie --dns 8.8.8.8 beim Start.
# Story 2: “Mount-Point blockiert System-Start”
Symptom: Der Docker-Dämon startet nicht, weil /var/lib/docker (eine eigene Partition) noch nicht gemountet ist.
Ursache: Race-Condition zwischen Systemd-Mount und Docker-Start.
Lösung: Nutzen Sie x-systemd.requires in der /etc/fstab für den Mountpoint, damit Docker auf die Partition wartet.
# 6. Sicherheit & Hardening
- Audit: Überwachen Sie
/var/lib/dockermitauditd(siehe Artikel 030). - Netzwerk: Nutzen Sie
--iptables=falsenur, wenn Sie genau wissen, was Sie tun (Docker bricht sonst Ihre UFW Regeln). - Images: Nutzen Sie immer spezifische Tags (
myapp:1.2.3) statt:latest.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Docker Version | docker version |
| Systemweite Info | docker info |
| Laufende Container | docker ps |
| Alle Images listen | docker images |
| Container interaktiv | docker exec -it <name> /bin/bash |
| Ressourcen-Monitor | docker stats |