Docker ist die Standard-Plattform für Container. Diese Anleitung zeigt die Installation der aktuellen Docker CE (Community Edition).

Voraussetzungen

  • Ubuntu 20.04, 22.04, 24.04 oder Debian 11/12
  • 64-Bit-System
  • Root-Zugriff

Alte Versionen entfernen

Falls ältere Docker-Versionen installiert sind:

apt remove docker docker-engine docker.io containerd runc

Installation via Repository (empfohlen)

1. Abhängigkeiten installieren

apt update
apt install ca-certificates curl gnupg lsb-release

2. Docker GPG-Key hinzufügen

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

Für Debian:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

3. Repository hinzufügen

Ubuntu:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

Debian:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Docker installieren

apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Schnelle Installation (convenience script)

Alternativ mit dem offiziellen Skript:

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Installation prüfen

Docker-Version

docker --version

Docker Compose-Version

docker compose version

Test-Container

docker run hello-world

Ausgabe sollte "Hello from Docker!" enthalten.

Dienst-Status

systemctl status docker

Docker ohne sudo nutzen

Docker-Befehle erfordern normalerweise root. Um Docker als normaler Benutzer zu nutzen:

# Gruppe docker erstellen (falls nicht vorhanden)
groupadd docker

# Benutzer zur Gruppe hinzufügen
usermod -aG docker $USER

# Neu anmelden oder:
newgrp docker

Testen:

docker run hello-world

Docker automatisch starten

systemctl enable docker
systemctl enable containerd

Docker-Konfiguration

Speicherort ändern

Standardmäßig unter /var/lib/docker. Für andere Partition:

mkdir /etc/docker

Erstellen Sie /etc/docker/daemon.json:

{
  "data-root": "/mnt/data/docker"
}
systemctl restart docker

Logging konfigurieren

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

DNS konfigurieren

{
  "dns": ["1.1.1.1", "8.8.8.8"]
}

Mehrere Optionen

{
  "data-root": "/mnt/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "dns": ["1.1.1.1", "8.8.8.8"],
  "storage-driver": "overlay2"
}

Nützliche Docker-Befehle

Container

# Container auflisten
docker ps
docker ps -a

# Container starten/stoppen
docker start container-name
docker stop container-name

# Container löschen
docker rm container-name

# Logs anzeigen
docker logs container-name
docker logs -f container-name

# Shell im Container
docker exec -it container-name bash

Images

# Images auflisten
docker images

# Image herunterladen
docker pull nginx:latest

# Image löschen
docker rmi nginx:latest

Aufräumen

# Gestoppte Container löschen
docker container prune

# Ungenutzte Images löschen
docker image prune

# Alles aufräumen
docker system prune -a

Docker Compose

Docker Compose ist nun als Plugin integriert:

# Neue Syntax
docker compose up -d
docker compose down
docker compose logs

# Alte Syntax (docker-compose v1) nicht mehr nötig

Beispiel docker-compose.yml

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
docker compose up -d

Firewall-Konfiguration

Docker manipuliert iptables direkt. Für ufw:

In /etc/docker/daemon.json:

{
  "iptables": false
}

Dann Ports manuell mit ufw freigeben.

Troubleshooting

"Cannot connect to Docker daemon"

# Docker läuft?
systemctl status docker

# Starten
systemctl start docker

# Socket-Berechtigungen
ls -la /var/run/docker.sock

"Permission denied"

# Zur docker-Gruppe hinzufügen
sudo usermod -aG docker $USER
# Neu anmelden!

Speicherplatz voll

# Speicherverbrauch
docker system df

# Aufräumen
docker system prune -a --volumes

Netzwerk-Probleme

# DNS im Container testen
docker run --rm busybox nslookup google.com

# DNS in daemon.json konfigurieren

Updates

apt update
apt upgrade docker-ce docker-ce-cli containerd.io

Deinstallation

apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

Fazit

Docker ist schnell installiert und einsatzbereit. Nutzen Sie das offizielle Repository für aktuelle Versionen. Vergessen Sie nicht, Ihren Benutzer zur docker-Gruppe hinzuzufügen und Log-Limits zu konfigurieren.