Was ist Docker? Docker auf Ubuntu installieren
Was ist Docker? Docker auf Ubuntu, Debian und AlmaLinux installieren, wichtige Befehle, Apps mit Docker Compose betreiben und die Falle mit der Firewall.

Inhalt
Docker ist eine Open-Source-Plattform, die Anwendungen zusammen mit allem, was sie brauchen, in isolierten Paketen ausführt, den sogenannten Containern. Bibliotheken, Laufzeitumgebung und Einstellungen einer Anwendung stecken in einem einzigen Image, das auf jedem Server mit Docker gleich läuft. Das beendet das Problem „Bei mir lief es doch“ und erlaubt es, Dutzende Dienste auf einem Server zu betreiben, ohne dass sie sich in die Quere kommen.
In dieser Anleitung erklären wir, was Docker ist, wie es sich von einem vServer unterscheidet, wie Sie Docker auf Ubuntu, Debian und AlmaLinux installieren, welche Befehle Sie brauchen und wie Sie eine Anwendung mit Docker Compose betreiben.
Was ist Docker und wofür nutzt man es?
Drei Begriffe reichen, um Docker zu verstehen:
- Image: Eine schreibgeschützte Vorlage mit allem, was eine Anwendung zum Laufen braucht. Tausende fertige Images wie
nginx,mysqlodernodegibt es auf Docker Hub. - Container: Eine laufende Instanz eines Images. Aus demselben Image können Sie beliebig viele Container starten.
- Volume: Dauerhafter Speicher, der auch nach dem Löschen eines Containers erhalten bleibt. Datenbankdateien und hochgeladene Inhalte liegen hier.
Docker ist besonders nützlich für:
- Einfache Installation: Eine Datenbank, ein Monitoring-Tool oder eine Webanwendung starten Sie mit einem einzigen Befehl.
- Keine Konflikte: Anwendungen, die unterschiedliche Node.js-, PHP- oder Python-Versionen brauchen, laufen nebeneinander auf demselben Server.
- Portabilität: Um eine Anwendung auf einen neuen Server umzuziehen, kopieren Sie nur ihre Konfigurationsdateien und Daten.
- Einfache Updates und Rollbacks: Sie laden das Image der neuen Version und legen den Container neu an; geht etwas schief, ist der Weg zurück eine einzige Zeile.
Docker und vServer im Vergleich
| Merkmal | vServer (VPS) | Docker-Container |
|---|---|---|
| Betriebssystem | Jeweils ein vollständiges OS mit eigenem Kernel | Teilt sich den Kernel des Hosts |
| Startzeit | Minuten | Sekunden |
| Overhead | Jeder betreibt ein eigenes Betriebssystem | Sehr gering, nur die Anwendung |
| Isolation | Virtualisierung auf Hardware-Ebene | Isolation auf Prozess-Ebene |
| Einsatz | Der Server selbst | Die Anwendungen auf dem Server |
Beides ergänzt sich, statt zu konkurrieren: Typischerweise mieten Sie einen vServer, installieren darauf Docker und betreiben Ihre Anwendungen als Container.
Docker auf Ubuntu und Debian installieren
Das Paket docker.io aus den Paketquellen der Distribution ist oft veraltet. Wir empfehlen das offizielle Docker-Repository. Nachdem Sie sich per SSH mit Ihrem Server verbunden haben, führen Sie diese Befehle nacheinander aus.
- Voraussetzungen installieren und den Signaturschlüssel von Docker hinzufügen:
sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc - Das Docker-Repository hinzufügen:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - Docker und das Compose-Plugin installieren:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - Die Installation testen:
sudo docker run hello-world
Erscheint „Hello from Docker!“, ist die Installation abgeschlossen.
Unter Debian gehen Sie genauso vor, ersetzen aber in den Adressen aus Schritt 1 und 2 ubuntu durch debian.
AlmaLinux und Rocky Linux
Auf RHEL-basierten Distributionen nutzen Sie das RHEL-Repository von Docker:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
Docker ohne sudo nutzen
Wenn Sie nicht vor jeden Befehl sudo schreiben möchten, fügen Sie Ihren Benutzer der Gruppe docker hinzu und melden sich neu an:
sudo usermod -aG docker $USER
Beachten Sie: Ein Mitglied der Gruppe docker hat praktisch Root-Rechte. Nehmen Sie nur Benutzer auf, denen Sie vertrauen.
Wichtige Docker-Befehle
| Befehl | Was er tut |
|---|---|
docker ps | Listet laufende Container auf (-a für alle) |
docker images | Listet heruntergeladene Images auf |
docker pull nginx | Lädt ein Image herunter |
docker logs -f container | Zeigt die Ausgabe eines Containers live an |
docker exec -it container bash | Öffnet eine Shell im laufenden Container |
docker stop container | Stoppt einen Container |
docker rm container | Löscht einen gestoppten Container |
docker system prune | Räumt ungenutzte Container, Netzwerke und Images auf |
Einen einzelnen Container starten Sie mit docker run:
docker run -d --name web -p 8080:80 --restart unless-stopped nginx
-d startet den Container im Hintergrund, -p 8080:80 verbindet Port 8080 des Servers mit Port 80 des Containers, und --restart unless-stopped sorgt dafür, dass der Container nach einem Neustart des Servers automatisch wieder läuft.
Anwendungen mit Docker Compose betreiben
Viele Optionen oder mehrere Container über lange docker run-Befehle zu verwalten, wird schnell unübersichtlich. Docker Compose fasst die gesamte Konfiguration in einer einzigen Datei compose.yaml zusammen. Als Beispiel richten wir Uptime Kuma ein, ein Open-Source-Tool, das überwacht, ob Ihre Websites und Server erreichbar sind.
Legen Sie einen Ordner an und schreiben Sie darin eine Datei compose.yaml:
services:
uptime-kuma:
image: louislam/uptime-kuma:1
restart: unless-stopped
ports:
- '3001:3001'
volumes:
- ./data:/app/data
Führen Sie dann im selben Ordner aus:
docker compose up -d
Die Anwendung ist jetzt unter http://server-ip:3001 erreichbar. Ihre Daten liegen im Verzeichnis data neben der Datei und bleiben auch erhalten, wenn Sie den Container löschen. Die wichtigsten Compose-Befehle:
docker compose ps: Zeigt den Status Ihrer Dienste.docker compose logs -f: Zeigt die Logs aller Dienste live an.docker compose pull && docker compose up -d: Lädt neue Images und legt die Container mit der neuen Version neu an.docker compose down: Stoppt die Dienste und löscht die Container; Volumes und eingebundene Ordner bleiben erhalten.
Für eine echte Website empfehlen wir, die Anwendung nicht direkt freizugeben, sondern einen Reverse Proxy wie Nginx oder Caddy davorzuschalten und sie unter Ihrer Domain mit einem SSL-Zertifikat auszuliefern.
Docker und die Firewall
Das überrascht Docker-Nutzer am häufigsten: Von Docker veröffentlichte Ports umgehen ufw. Docker legt für Ports, die Sie mit -p oder ports: freigeben, eigene iptables-Regeln an, und diese greifen vor den Regeln von ufw. Ein Datenbank-Port, der in ufw geschlossen aussieht, kann also aus dem Internet erreichbar sein.
Um das zu verhindern, binden Sie Ports, die nur lokal gebraucht werden, an die Loopback-Adresse:
ports:
- '127.0.0.1:3306:3306'
Noch besser: Veröffentlichen Sie die Ports von Diensten wie Datenbanken gar nicht. Dienste in derselben Compose-Datei erreichen sich gegenseitig über ihren Dienstnamen (zum Beispiel db:3306); geben Sie nur die Ports frei, die wirklich öffentlich sein müssen. Wie Ports und Firewalls funktionieren, erklären wir in Was ist ein Port?
Docker aktuell und gesund halten
- Image-Versionen festlegen. Nutzen Sie eine Hauptversion wie
postgres:16stattlatest, damit ein Update nicht unerwartet eine Hauptversion überspringt. - Regelmäßig aktualisieren. Docker Engine wird mit den Systempaketen per
apt upgradeaktualisiert. Ihre Images frischen Sie regelmäßig mitdocker compose pullauf. - Speicherplatz im Blick behalten. Alte Images und Logs sammeln sich mit der Zeit an.
docker system dfzeigt die Belegung,docker system pruneräumt auf. - Volumes sichern. Server-Backups helfen, aber zusätzlich regelmäßige Datenbank-Dumps anzulegen ist der sicherste Weg.
Nodesty-Server für Docker
Um Docker voll auszuschöpfen, brauchen Sie einen Server mit Root-Zugriff und KVM-Virtualisierung. Die AMD Ryzen 9 9950X vServer von Nodesty eignen sich mit ihrer hohen Single-Core-Leistung für Webanwendungen und Gameserver, die AMD EPYC 7763 vServer bieten viel RAM für zahlreiche Container und Datenbanken. Beide Pakete umfassen NVMe-Speicher, nShield-DDoS-Schutz und kostenlose tägliche Backups mit 7 Tagen Aufbewahrung; wählen Sie Ubuntu, Debian oder AlmaLinux, und Docker läuft in wenigen Minuten.
Häufig gestellte Fragen
Ist Docker dasselbe wie ein vServer?
Nein. Ein vServer (VPS) betreibt ein vollständiges Betriebssystem mit eigenem Kernel. Docker-Container sind voneinander isolierte Prozesse, die sich den Kernel des Hosts teilen. Docker läuft in der Regel innerhalb eines vServers oder eines dedizierten Servers.
Ist Docker kostenlos?
Docker Engine, die Sie auf Servern einsetzen, ist Open Source und kostenlos. Lizenzkosten betreffen nur größere Unternehmen, die Docker Desktop kommerziell auf Arbeitsplatzrechnern nutzen, sowie einige kostenpflichtige Docker-Hub-Tarife.
Wie viel RAM braucht Docker?
Docker Engine selbst kommt mit wenigen hundert MB aus. Den eigentlichen Bedarf bestimmen die Anwendungen in Ihren Containern. Für einige kleine Webdienste und eine Datenbank sind 2–4 GB ein guter Start, für viele Dienste oder große Datenbanken eher 8 GB und mehr.
Läuft Docker auf Windows Server?
Linux-Container laufen am reibungslosesten auf Linux-Servern, und die große Mehrheit der Docker-Images ist für Linux gebaut. Windows Server kann Windows-Container ausführen; wenn Sie Docker auf einem Server nutzen möchten, empfehlen wir aber eine Linux-Distribution wie Ubuntu oder Debian.
Gehen meine Daten verloren, wenn ich einen Container lösche?
Daten, die im Container selbst gespeichert werden, sind beim Löschen des Containers weg. Für alles, was bestehen bleiben soll, nutzen Sie ein Volume oder einen Bind Mount auf einen Ordner des Hosts. So überstehen Ihre Daten Image-Updates und das Neuanlegen von Containern.
Warum ist ein von Docker veröffentlichter Port trotz ufw erreichbar?
Docker legt für veröffentlichte Ports eigene iptables-Regeln an, die vor den ufw-Regeln greifen. Ein Port, der in ufw geschlossen aussieht, kann über Docker also trotzdem aus dem Internet erreichbar sein. Binden Sie Ports, die nur lokal gebraucht werden, an 127.0.0.1.
Über den Autor
Nodesty-Team · Infrastruktur und Support
Das Nodesty-Team betreibt unsere Server, unser Netzwerk und unseren DDoS-Schutz im Alltag und beantwortet Support-Anfragen rund um die Uhr. Diese Ratgeber entstehen aus dieser Arbeit.
Verwandte Artikel

Ubuntu Upgrade: Server auf die neue LTS-Version bringen
Ubuntu Server auf die neue LTS-Version upgraden: Backup, Vorbereitung, do-release-upgrade, SSH-Verbindung, Kontrollen danach und Neuinstallation erklärt.

Was ist ein Load Balancer? So funktioniert Lastverteilung
Was ist ein Load Balancer und wofür? Methoden der Lastverteilung, Health Checks, Sessions, Load Balancing mit Nginx, HAProxy und wann Sie einen brauchen.

Laravel deployen: Anwendung auf dem vServer veröffentlichen
Laravel deployen auf dem Server: PHP-FPM, Composer, .env, Datenbank, Dateirechte, Nginx, Queue Worker, Scheduler, SSL und Updates Schritt für Schritt.