Mit Docker betreibst du Websites, Datenbanken, Bots und Panels in isolierten Containern, jeweils mit eigenen Abhängigkeiten und ohne das System zuzumüllen.
Installieren
Das offizielle Skript installiert Docker und das Compose-Plugin unter Ubuntu und Debian:
curl -fsSL https://get.docker.com | sh
Prüfe, ob es funktioniert:
docker run --rm hello-world
docker compose version
Ein Beispiel mit Compose
Leg einen Ordner mit einer docker-compose.yml an, zum Beispiel für eine einfache Website:
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
docker compose up -d # im Hintergrund starten
docker compose logs -f # Logs ansehen
docker compose down # stoppen
restart: unless-stopped sorgt dafür, dass er nach einem Neustart des VPS von selbst wiederkommt.
Achtung: Docker umgeht ufw
Die Ports, die du mit ports: (oder -p) veröffentlichst, werden ins Internet geöffnet, auch wenn ufw sie als geschlossen anzeigt, weil Docker seine eigenen Regeln in die Firewall schreibt. Das ist die Ursache vieler versehentlich offener Datenbanken.
Wenn ein Dienst nur von anderen Containern oder vom Server selbst genutzt wird, veröffentliche ihn nur lokal:
ports:
- "127.0.0.1:3306:3306"
Und zwischen Containern derselben docker-compose.yml musst du gar nichts veröffentlichen: Sie erreichen sich über den Namen des Dienstes.
Aufräumen
Alte Images sammeln sich an und füllen die Festplatte. Ab und zu:
docker system prune
Löscht gestoppte Container, ungenutzte Netzwerke und Images ohne Tag. Vorher fragt es nach einer Bestätigung.