1. Vorbereitung & Offizielles Docker-Repository
Verwenden Sie nicht das veraltete docker.io-Paket aus den Standard-Repositories, sondern binden Sie das offizielle Docker-Apt-Repository ein:
# 1. Veraltete Pakete deinstallieren
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do apt-get remove -y $pkg; done
# 2. Paket-Abhängigkeiten und GPG-Schlüssel laden
apt-get update && apt-get install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
# 3. Offizielles apt-Repository eintragen
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
2. Docker CE & Compose v2 Installation
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Nicht-Root-Benutzer der Docker-Gruppe zuweisen
usermod -aG docker $USER
# Versionen prüfen
docker --version && docker compose version
3. daemon.json Konfiguration (Log-Limits)
In der Standardeinstellung wachsen Container-Logs unbegrenzt an. Begrenzen Sie die Logs über /etc/docker/daemon.json und aktivieren Sie live-restore:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
},
"live-restore": true,
"features": {
"buildkit": true
}
}
systemctl restart docker
4. Sicherheitsfix: Docker UFW-Bypass
🚨 Wichtiger Sicherheitshinweis:
Docker greift direkt in die iptables-Regeln ein und umgeht UFW vollständig. Jeder Port, der per -p 8080:80 freigegeben wird, ist für das gesamte Internet erreichbar – selbst wenn UFW alle eingehenden Ports sperrt.
✅ Lösung A: Bindung an Localhost (127.0.0.1)
Geben Sie Ports in Compose als 127.0.0.1:8080:80 an, damit nur der lokale Reverse Proxy Zugriff erhält.
✅ Lösung B: ufw-docker Patch installieren
wget -O /usr/local/bin/ufw-docker https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker
chmod +x /usr/local/bin/ufw-docker
ufw-docker install
systemctl restart ufw
5. Compose-Boilerplate: Nginx & Let's Encrypt
Ein produktionsreifes Docker Compose Boilerplate für Reverse-Proxy-Setups:
services:
app:
image: nginx:alpine
container_name: web_service
restart: unless-stopped
ports:
- "127.0.0.1:8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
networks:
- internal_net
networks:
internal_net:
driver: bridge
6. Portainer CE Dashboard installieren
Portainer CE bietet eine übersichtliche Web-Oberfläche zur Verwaltung von Containern, Logs und Volumes:
docker volume create portainer_data
docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Rufen Sie https://<IHRE_SERVER_IP>:9443 im Browser auf, um den Administrator-Zugang einzurichten.
7. Wartung & Bereinigung (docker system prune)
Regelmäßige Bereinigung verwaister Images und Build-Caches hält die NVMe-Festplatte frei:
# 1. Speicherbelegung prüfen
docker system df
# 2. Nicht genutzte Ressourcen entfernen
docker system prune -f
# 3. Vollständige Bereinigung inkl. Volumes
docker system prune -a --volumes -f
8. Häufig gestellte Fragen (FAQ)
Q: Warum blockiert UFW keine Ports, die über Docker freigegeben wurden?
Docker greift direkt in die iptables NAT-Tabelle ein. Diese PREROUTING-Kette greift vor der INPUT-Filterung von UFW. Daher sind mit -p gemappte Ports weltweit offen, sofern man sie nicht an 127.0.0.1 bindet oder das Tool ufw-docker einsetzt.
Q: Was tun, wenn /var/lib/docker/overlay2 den Speicherplatz füllt?
Prüfen Sie mit "docker system df" die Ursache. Führen Sie "docker system prune -a --volumes" aus, um ungenutzte Images und Volumes zu entfernen. Begrenzen Sie zudem Container-Logs in der daemon.json auf 50 MB.
Q: Gibt es Unterschiede zwischen lokalem Docker Compose und dem Einsatz auf Netcup VPS?
In der Produktion sollten Sie: 1. Feste Image-Tags statt "latest" verwenden; 2. "restart: unless-stopped" für automatischen Neustart nach Reboots deklarieren; 3. Datenbank-Ports niemals öffentlich mappen, sondern interne Docker-Netzwerke nutzen.
Q: Verringert Docker die Performance auf Netcup AMD EPYC Servern?
Nein, der Overhead liegt unter 1%. Da Docker auf Linux Cgroups und Namespaces basiert, greifen Container ohne Hardware-Emulation direkt auf CPU und NVMe-Speicher zu.
Markus S.
Senior Cloud Infrastructure Architect & Linux Sysadmin
Markus ist spezialisiert auf europäische Cloud-Infrastrukturen und Linux-Performance. Sämtliche Benchmarks, Konfigurationsanleitungen und Steuerbefreiungstests basieren auf selbstfinanzierten Netcup RS/VPS-Systemen im Nürnberger Rechenzentrum (AMD EPYC Architektur).
📚 Empfohlene Anleitungen & Hosting-Vergleiche
Praxisgetestete Leitfäden für maximale Ersparnis und reibungslose Serverkonfiguration
Netcup Mehrwertsteuerbefreiung (0% MwSt.): Automatische Befreiung ohne Antrag
Vollständiger Leitfaden zur automatischen Befreiung von der 19% deutschen MwSt. nach § 3a UStG.
Netcup Registrierung & Bestellung: Verifizierung & Identitätsprüfung
Von der Produktauswahl bis zur Freischaltung im CCP. Typische Fallstricke vermeiden.
Netcup vs. Hetzner Cloud: Ausführlicher Benchmark & Preis-Leistungs-Vergleich
Dedicated vCPU Performance, Traffic-Richtlinien und Nürnberger Rechenzentren im Härtetest.
Netcup Custom ISO: Windows & Linux über das SCP installieren
Schrittweise Anleitung zur Einbindung eigener ISO-Images mit VirtIO-Treibern über das SCP.
💰 Geprüfte Netcup Gutscheine & Rabatte
Wir pflegen eine aktuelle Sammlung verifizierter Netcup-Gutscheincodes mit automatischer Echtzeit-Synchronisierung. Bis zu 30% Rabatt oder kostenlose Monate.
Alle Gutscheine ansehen →