Docker auf einem VPS installieren und nutzen
Von Resolve Team
Docker hat die Art, wie wir Software deployen, grundlegend veraendert. Anstatt Anwendungen direkt auf dem Server zu installieren und mit Abhaengigkeitskonflikten zu kaempfen, packst du alles in isolierte Container. In diesem Tutorial zeigen wir dir, wie du Docker auf deinem VPS einrichtest und produktiv nutzt.
Warum Docker auf einem VPS?
Docker loest einige der groessten Probleme beim Server-Management:
- Isolation: Jede Anwendung laeuft in ihrem eigenen Container mit eigenen Abhaengigkeiten. Keine Konflikte mehr zwischen verschiedenen Software-Versionen.
- Reproduzierbarkeit: Ein Docker-Image laeuft ueberall gleich — egal ob auf deinem Laptop oder auf dem Server.
- Einfaches Deployment:
docker compose up -dund dein gesamter Stack laeuft. Kein manuelles Installieren und Konfigurieren. - Updates: Neues Image ziehen, Container neustarten, fertig. Rollbacks sind genauso einfach.
Auf einem VPS mit voller Root-Kontrolle kannst du Docker optimal nutzen. Im Vergleich zu managed Container-Plattformen hast du die volle Flexibilitaet bei deutlich niedrigeren Kosten.
Docker installieren
Bei Resolve Hosting gibt es zwei Wege:
Option 1: 1-Click Docker Host
Im Marketplace findest du ein vorkonfiguriertes Docker-Image. Der VPS kommt mit Docker Engine, Docker Compose und Portainer (Web-UI zur Container-Verwaltung) vorinstalliert. Ein Klick und du kannst sofort loslegen.
Option 2: Manuelle Installation
Auf einem frischen Ubuntu 24.04 Server:
# Docker GPG Key hinzufuegen
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker.gpg
# Repository einrichten
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list
# Installieren
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Docker ohne sudo nutzen (fuer deinen User)
usermod -aG docker deinuser
Nach dem Logout und erneutem Login kannst du docker run hello-world ausfuehren, um die Installation zu testen.
Erste Container starten
Docker-Container starten ist denkbar einfach. Hier ein paar Beispiele:
Nginx Webserver:
docker run -d --name webserver -p 80:80 nginx:alpine
Oeffne die IP deines Servers im Browser und du siehst die Nginx-Willkommensseite.
PostgreSQL Datenbank:
docker run -d --name postgres -e POSTGRES_PASSWORD=sicher123 -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:16-alpine
Das -v pgdata:/var/lib/postgresql/data sorgt dafuer, dass die Daten auch nach einem Container-Neustart erhalten bleiben.
Docker Compose Beispiel
Fuer produktive Setups nutzt du Docker Compose. Damit definierst du deinen gesamten Stack in einer einzigen YAML-Datei. Hier ein Beispiel fuer eine WordPress-Installation mit Datenbank:
# docker-compose.yml
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: geheim
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
db:
image: mariadb:11
environment:
MYSQL_ROOT_PASSWORD: rootgeheim
MYSQL_DATABASE: wordpress
MYSQL_USER: wp
MYSQL_PASSWORD: geheim
volumes:
- db_data:/var/lib/mysql
volumes:
wp_data:
db_data:
Starte den Stack mit:
docker compose up -d
Beide Container starten, das Netzwerk wird automatisch erstellt und WordPress kann die Datenbank ueber den Hostnamen db erreichen. So einfach ist das.
Reverse Proxy mit Traefik
Wenn du mehrere Anwendungen auf einem Server betreibst, brauchst du einen Reverse Proxy, der eingehende Anfragen an den richtigen Container weiterleitet. Traefik ist dafuer ideal, weil es Docker-Container automatisch erkennt.
# docker-compose.yml (Traefik)
services:
traefik:
image: traefik:v3.0
command:
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.letsencrypt.acme.email=dein@email.de"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- letsencrypt:/letsencrypt
volumes:
letsencrypt:
Deine anderen Container versorgst du dann einfach mit Labels:
services:
meine-app:
image: meine-app:latest
labels:
- "traefik.http.routers.app.rule=Host(`app.deinedomain.de`)"
- "traefik.http.routers.app.tls.certresolver=letsencrypt"
Traefik holt sich automatisch ein Let's-Encrypt-Zertifikat und leitet den Traffic an deinen Container weiter. Kein manuelles Nginx-Konfigurieren, keine Zertifikatsantraege.
Vergiss nicht, die Firewall-Ports im Resolve Dashboard freizugeben (80 und 443) und deine DNS-Eintraege auf die Server-IP zu zeigen. Dann laeuft dein Setup innerhalb von Minuten.
Docker auf einem VPS ist die flexibelste Art, Anwendungen zu betreiben. Und mit den automatischen Backups von Resolve Hosting musst du dir keine Sorgen machen, wenn mal etwas schiefgeht — ein Restore bringt deinen gesamten Server inklusive aller Container-Daten zurueck.