Docker auf Ubuntu installieren: Vollständige einsteigerfreundliche Anleitung (offizielle Methode)

目次

1. Einführung

Wenn man eine Entwicklungsumgebung unter Ubuntu einrichtet, werden Situationen, in denen man denkt „lassen wir jetzt einfach Docker installieren“, immer häufiger. Web‑Anwendungen, Batch‑Verarbeitung, Test‑Datenbanken, Test‑Middleware … Wenn man diese jedes Mal manuell installiert, wird eine enorme Menge an Zeit und Aufwand allein für das Aufsetzen der Umgebung verbraucht.

Genau hier wird die Container‑Virtualisierungstechnologie Docker extrem nützlich. Mit Docker kann man nicht nur die Anwendung selbst, sondern auch alle benötigten Bibliotheken und Konfigurationen zusammen als ein „Image“ verwalten. Sobald Docker auf Ubuntu installiert ist, kann man leicht:

  • In wenigen Minuten eine neue Entwicklungsumgebung starten
  • Sicherstellen, dass alle Teammitglieder das Verhalten in der gleichen Umgebung reproduzieren können
  • Eine produktionsähnliche Umgebung lokal mit Leichtigkeit nachbauen

Diese Vorteile lassen sich mit minimalem Aufwand genießen.

Andererseits gibt es für Erstnutzer von Docker viele häufige Stolpersteine:

  • Nicht zu wissen, welches Installationsverfahren tatsächlich korrekt ist
  • Nicht zu verstehen, worin der Unterschied zwischen Ubuntus Standard‑Repository und dem offiziellen Docker‑Repository besteht
  • Auf Berechtigungsfehler zu stoßen, weil unklar ist, wann sudo verwendet werden muss

Wenn Sie nach „ubuntu install docker“ suchen, finden Sie zahlreiche Artikel, die lange Befehlssequenzen auflisten, aber oft nicht erklären, warum diese Schritte notwendig sind oder was eine vollständige Installation ausmacht.

1-1. Ziel dieses Artikels

Dieser Artikel richtet sich an Leser, die Docker unter Ubuntu installieren wollen, und behandelt die folgenden Schwerpunkte:

  • Das derzeit gängige Verfahren zur Installation von Docker unter Ubuntu
  • Eine besser handhabbare Installationsmethode über das offizielle Repository
  • Wie man den docker‑Befehl ohne sudo ausführt
  • Nachinstallations‑Verifikation und wesentliche Grundbefehle
  • Eine Einführung in häufig genutzte Werkzeuge wie Docker Compose

Statt nur Befehle aufzuzählen, erklärt dieser Leitfaden warum jeder Schritt notwendig ist, sodass Sie Ihre Umgebung künftig leichter pflegen können.

1-2. Zielgruppe und Voraussetzungen

Dieser Artikel ist für Leser gedacht, die:

  • Grundlegende Ubuntu‑Operationen verstehen (Terminal öffnen, apt‑Befehl benutzen usw.)
  • Entwickler oder angehende Ingenieure sind, die Docker zum ersten Mal ausprobieren
  • Erwägen, bestehende Testumgebungen in Container zu migrieren

Fortgeschrittene Linux‑Administrationskenntnisse sind nicht erforderlich. Solange Sie sich damit wohlfühlen, Befehle im Terminal einzugeben, sollte dieser Leitfaden ausreichen.

1-3. Aufbau des Artikels und Leseempfehlung

Der Artikel ist in folgender Reihenfolge aufgebaut:

  • Prüfung der Voraussetzungen
  • Installationsmethoden (offizielles Repository / skriptbasiert)
  • Berechtigungseinstellungen und Verifikation
  • Installation von Docker Compose
  • Fehlersuche und nächste Schritte

Sie können den Artikel von Anfang bis Ende lesen, oder – falls Docker bereits installiert ist – sich nur auf die Abschnitte „Berechtigungen“ oder „Compose“ konzentrieren.

2. Voraussetzungen und Vorbereitung

Docker selbst zu installieren ist relativ einfach, doch je nach Ubuntu‑Version oder vorhandener Umgebung gibt es mehrere Punkte, die vorher überprüft werden sollten. Dieser Abschnitt fasst die notwendigen Voraussetzungen und Vorbereitungen für eine reibungslose Installation zusammen.

2-1. Unterstützte Ubuntu‑Versionen

Docker funktioniert auf vielen Ubuntu‑Versionen, aber die folgenden LTS‑Release‑Versionen werden am häufigsten verwendet:

  • Ubuntu 22.04 LTS (Empfohlen)
  • Ubuntu 20.04 LTS
  • Ubuntu 24.04 LTS (Neueste)

LTS‑Versionen (Long Term Support) bieten langfristige Stabilität und eignen sich daher ideal für die Pflege von Docker‑basierten Entwicklungsumgebungen.

Nicht‑LTS‑Versionen (wie 23.10) können ebenfalls verwendet werden, doch in professionellen Umgebungen werden in der Regel LTS‑Versionen bevorzugt.

2-2. Vorgeinstallierte Docker‑Pakete

Das Standard‑Repository von Ubuntu enthält ein Paket namens docker.io. Dieses ist jedoch nicht das offizielle Docker‑Paket von Docker Inc., und die Aktualisierungen hinken oft hinterher. Daher wird die Installation von Docker aus dem offiziellen Repository dringend empfohlen.

Zuerst prüfen und ggf. vorhandene Docker‑bezogene Pakete entfernen:

sudo apt remove docker docker.io containerd runc

Wenn die Meldung anzeigt, dass nichts installiert ist, ist keine Aktion erforderlich.

2-3. APT aktualisieren und erforderliche Pakete installieren

Bevor das offizielle Docker‑Repository hinzugefügt wird, APT aktualisieren und die benötigten Werkzeuge installieren:

sudo apt update
sudo apt install -y ca-certificates curl gnupg

Diese Werkzeuge werden benötigt, um den GPG‑Schlüssel und das Repository von Docker sicher hinzuzufügen.

2-4. Administratorrechte überprüfen (sudo)

Die Docker‑Installation erfordert sudo‑Rechte. Wenn Ihr Konto keinen sudo‑Zugriff hat, wechseln Sie zu einem Administratorkonto oder beantragen Sie die Berechtigung.

Sie können den sudo‑Zugriff mit dem folgenden Befehl überprüfen:

sudo -v

Wenn Sie nach einem Passwort gefragt werden und der Befehl erfolgreich ist, können Sie fortfahren.

2-5. Netzwerkverbindung prüfen

Die Installation von Docker erfordert Zugriff auf externe Repositories, daher ist eine aktive Internetverbindung zwingend erforderlich. In Unternehmens‑ oder Proxy‑Umgebungen kann das Abrufen des GPG‑Schlüssels aufgrund von Zugriffsrestriktionen fehlschlagen.

In solchen Fällen wenden Sie sich an Ihren Netzwerkadministrator bezüglich Proxy‑Einstellungen oder Whitelist‑Konfigurationen.

2-6. Installationsmethode wählen

Es gibt drei Hauptmethoden, Docker zu installieren:

  1. Installation über das offizielle Docker‑Repository (empfohlen)
  2. Verwenden Sie das Installationsskript get.docker.com (schnell und einfach)
  3. Manuelles Herunterladen und Installieren von Docker‑.deb‑Paketen (Sonderfälle)

Dieser Artikel konzentriert sich hauptsächlich auf die Methode des offiziellen Repositories, da sie am häufigsten verwendet wird und am einfachsten zu warten ist.

3. Docker installieren

Jetzt installieren wir Docker auf Ubuntu. Obwohl mehrere Installationsmethoden existieren, konzentriert sich diese Anleitung auf die Methode des offiziellen Docker‑Repositories, da sie am zuverlässigsten und in Produktionsumgebungen am weitesten verbreitet ist.

Diese Methode ermöglicht stabile Aktualisierungen über apt upgrade und ist damit ideal für den langfristigen Einsatz.

3-1. Hinzufügen des offiziellen Docker‑Repositories (empfohlen)

Zuerst registrieren Sie den offiziellen GPG‑Schlüssel von Docker und fügen das Docker‑Repository zu APT hinzu.
Sobald dies korrekt konfiguriert ist, können Sie vermeiden, versehentlich das veraltete docker.io‑Paket aus dem Standard‑Repository von Ubuntu zu installieren.

3-1-1. Registrierung des GPG‑Schlüssels

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  • /etc/apt/keyrings/ ist der empfohlene Speicherort für Schlüssel bei Ubuntu 22.04 und neuer
  • --dearmor konvertiert den Schlüssel in ein Binärformat

Dieser Schritt ermöglicht es APT, dem offiziellen Docker‑Repository zu vertrauen.

3-1-2. Hinzufügen des Repositories

Als Nächstes fügen Sie das Docker‑Repository zur APT‑Quellenliste hinzu.

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" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Wichtige Punkte:

  • $(. /etc/os-release && echo $VERSION_CODENAME) fügt automatisch den korrekten Ubuntu‑Codenamen ein (z. B. jammy oder focal)
  • Nur das stabile Repository wird hinzugefügt

3-1-3. Repository-Informationen aktualisieren

Nach dem Hinzufügen des Repositories aktualisieren Sie den APT‑Index.

sudo apt update

An diesem Punkt sollte docker-ce (Docker Engine) als installierbares Paket erscheinen.

3-2. Docker Engine installieren

Jetzt installieren Sie die Hauptpakete von Docker.

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

Paketrollen:

  • docker-ce : Docker Engine Kern
  • docker-ce-cli : Docker Befehlszeilenschnittstelle
  • containerd.io : Kern-Container-Laufzeit, die von Docker verwendet wird
  • docker-buildx-plugin : Erweiterte Build‑Funktionen wie Multi‑Plattform‑Builds
  • docker-compose-plugin : Docker Compose V2 (Befehl docker compose)

Nach der Installation startet der Docker‑Daemon automatisch.

3-3. Installation überprüfen

Überprüfen Sie den Laufzeitstatus von Docker mit folgendem Befehl:

sudo systemctl status docker

Wenn Sie active (running) sehen, funktioniert Docker korrekt.

Drücken Sie q, um die Statusanzeige zu verlassen.

3-4. Optional: Skriptbasierte Installation für Komfort

Docker stellt außerdem ein All‑in‑One‑Installationsskript bereit.

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

Vorteile:

  • Weniger Befehle und schnelle Einrichtung
  • Ideal für einfache oder kurzlebige Umgebungen

Nachteile:

  • Schwierige Versionskontrolle
  • Oft für Produktion oder langfristige Nutzung nicht empfohlen

Obwohl es für Anfänger praktisch ist, legt dieser Artikel Wert auf Wartbarkeit und konzentriert sich daher auf die Methode über das offizielle Repository.

3-5. Hinweise zu den neuesten Ubuntu‑Versionen (z. B. 24.04)

Unmittelbar nach einer großen Ubuntu‑Veröffentlichung unterstützt das offizielle Docker‑Repository die neue Version möglicherweise noch nicht vollständig.
In solchen Fällen prüfen Sie Folgendes:

  • Dass der Speicherort und das Format des GPG‑Schlüssels den aktuellen Vorgaben entsprechen
  • Dass VERSION_CODENAME offiziell unterstützt wird
  • Dass bei apt update keine Signaturfehler auftreten

Falls die Unterstützung verzögert ist, kann die vorübergehende Nutzung des get.docker.com‑Skripts eine praktische Lösung sein.

4. Benutzerrechte und Docker ohne sudo ausführen

Nach der Installation von Docker möchten Sie möglicherweise sofort den Befehl docker verwenden. Standardmäßig müssen Sie jedoch jedem Befehl sudo voranstellen.

Dieses Verhalten ist aus Sicherheitsgründen beabsichtigt, ist jedoch für die tägliche Entwicklung oder das Lernen umständlich. Um dies zu beheben, können Sie Ihren Benutzer zur docker‑Gruppe hinzufügen, sodass Docker‑Befehle ohne sudo ausgeführt werden können.

4-1. Warum das Ausführen ohne sudo wichtig ist

Unter Ubuntu läuft der Docker‑Daemon (dockerd) mit Root‑Rechten.
Daher erfordert das Erstellen oder Entfernen von Containern über den Befehl docker normalerweise Root‑Zugriff.

Die docker‑Gruppe existiert, um diese Anforderung zu erfüllen.

  • Benutzer in dieser Gruppe können direkt auf den Docker‑Daemon zugreifen
  • Damit können Befehle wie docker run ohne sudo ausgeführt werden
  • Diese Konfiguration ist fast unverzichtbar für die Entwicklung

Beachten Sie, dass die docker‑Gruppe praktisch Root‑ähnliche Rechte gewährt, daher ist Vorsicht in gemeinsam genutzten Umgebungen geboten.
(Für persönliche Desktops oder WSL2 ist dies in der Regel kein Problem.)

4-2. Hinzufügen Ihres Benutzers zur docker‑Gruppe

Fügen Sie den aktuell angemeldeten Benutzer zur docker‑Gruppe hinzu:

sudo usermod -aG docker $USER

Dieser Befehl fügt den Benutzer zur Gruppe hinzu. Die Option -aG steht für append to group (zur Gruppe hinzufügen).

4-3. Änderungen anwenden

Änderungen der Gruppenmitgliedschaft werden wirksam, nachdem Sie sich ab‑ und wieder angemeldet haben.

Um die Änderung sofort anzuwenden, können Sie außerdem ausführen:

newgrp docker

Damit wird eine neue Shell‑Sitzung mit den docker‑Gruppenrechten gestartet.

4-4. Überprüfung der sudo‑freien Ausführung

Testen Sie nun Docker ohne sudo:

docker run hello-world

Erfolgreiche Ausgabe:

  • Hallo von Docker!
  • Das Image wird heruntergeladen und die Meldung wird angezeigt

Falls ein Fehler auftritt, prüfen Sie Folgendes:

  • Haben Sie sich nach der Änderung der Gruppenmitgliedschaft ab‑ und wieder angemeldet?
  • Wird /usr/bin/docker verwendet?
  • Läuft der Docker‑Daemon (systemctl status docker)?

4-5. Sicherheitsüberlegungen (Wichtig)

Die docker‑Gruppe gewährt mächtige Rechte, die praktisch einem Root‑Zugriff entsprechen.

  • Beliebige Dateien lesen
  • Host‑Verzeichnisse in Container einbinden
  • Netzwerkoperationen durchführen
  • Systemweite Kontrolle über den Docker‑Socket

Dies ist für persönliche Systeme akzeptabel, aber die Benutzerverwaltung ist auf gemeinsam genutzten Servern entscheidend.

In solchen Fällen können Sie rootless Docker in Betracht ziehen, das in späteren Abschnitten behandelt wird.

5. Start‑ und Betriebsüberprüfung

Sobald die Docker-Installation und die Berechtigungskonfiguration abgeschlossen sind, besteht der nächste Schritt darin, zu überprüfen, dass Docker korrekt funktioniert.
Dieser Abschnitt erklärt, wie der Docker‑Dienststatus überprüft wird und wie Container tatsächlich ausgeführt werden.

5-1. Überprüfung des Docker‑Daemon‑Status

Zuerst prüfen Sie, ob Docker im Hintergrund korrekt läuft.

sudo systemctl status docker

Wichtige Statusindikatoren:

  • active (running) → Normaler Betrieb
  • inactive → Nicht aktiv (muss manuell gestartet werden)
  • failed → Konfigurations‑ oder Abhängigkeitsfehler

Falls der Status inactive oder failed ist, starten Sie Docker mit dem folgenden Befehl:

sudo systemctl start docker

Um sicherzustellen, dass Docker beim Systemstart automatisch startet:

sudo systemctl enable docker

5-2. Überprüfung des Betriebs mit dem hello-world‑Container

Der gängigste Weg, die Docker-Installation zu überprüfen, ist das Ausführen des offiziellen hello-world‑Images.

docker run hello-world

Dieser Befehl führt die folgenden Aktionen aus:

  1. Lädt das Image von Docker Hub herunter, falls es nicht lokal vorhanden ist
  2. Startet einen Container aus dem Image
  3. Zeigt eine Testnachricht an und beendet sich

Bei Erfolg sehen Sie eine Ausgabe, die etwa wie folgt aussieht:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Wenn diese Meldung erscheint, ist Docker installiert und funktioniert korrekt.

5-3. Ausprobieren grundlegender Docker‑Befehle

Sobald der Grundbetrieb bestätigt ist, probieren Sie einige häufig genutzte Docker‑Befehle aus.

5-3-1. Auflisten von Docker‑Images

docker images

Dies zeigt eine Liste der lokal heruntergeladenen Images an. Wenn hello-world erscheint, funktioniert alles wie erwartet.

5-3-2. Überprüfen laufender Container

docker ps

Dieser Befehl listet die derzeit laufenden Container auf.
(Der hello-world‑Container beendet sich sofort und wird normalerweise nicht angezeigt.)

Um auch gestoppte Container anzuzeigen:

docker ps -a

5-3-3. Ausführen eines offiziellen Image‑Beispiels

Um einen einfachen Nginx‑Webserver auszuprobieren:

docker run -d -p 8080:80 nginx
  • -d → Im Hintergrund ausführen
  • -p → Host‑Port 8080 auf Container‑Port 80 abbilden

Öffnen Sie http://localhost:8080 in Ihrem Browser, um die Standard‑Nginx‑Seite zu sehen.

5-4. Stoppen und Entfernen von Containern

Sie können einen laufenden Container mit dem folgenden Befehl stoppen:

docker stop <container-id>

Um einen Container zu entfernen:

docker rm <container-id>

Um ungenutzte Images zu entfernen:

docker rmi <image-id>

Denken Sie daran, dass die Abhängigkeiten der Reihenfolge Container → Image → Volume folgen, also entfernen Sie sie vorsichtig.

5-5. Häufige Fehlerursachen

● Berechtigungsfehler

Got permission denied while trying to connect to the Docker daemon socket
→ Der Benutzer ist nicht zur docker‑Gruppe hinzugefügt

● Docker‑Daemon läuft nicht

Cannot connect to the Docker daemon at unix:///var/run/docker.sock
→ Starten Sie Docker mit systemctl start docker

● Netzwerkprobleme verhindern den Image‑Download

→ Überprüfen Sie Proxy‑Einstellungen, DNS‑Konfiguration oder Netzwerkbeschränkungen

● Legacy‑Paket docker.io noch installiert

→ Deinstallieren Sie es vollständig und installieren Sie Docker erneut aus dem offiziellen Repository

6. Installation und Verwendung von Docker Compose

Ein unverzichtbares Werkzeug für die Arbeit mit Docker in größerem Umfang ist Docker Compose.
Moderne Webanwendungen bestehen häufig aus mehreren Komponenten wie Datenbanken, Caches, Workern und Webservern. Diese einzeln mit docker run‑Befehlen zu verwalten, wird schnell unpraktisch.

Docker Compose ermöglicht es Ihnen, mehrere Container‑Konfigurationen in einer einzigen Datei zu definieren und gemeinsam zu verwalten, und ist damit eines der am häufigsten genutzten Werkzeuge in der Praxis.

6-1. Überprüfung der Docker Compose V2‑Installation

Bei der Installation von Docker aus dem offiziellen Repository wird Docker Compose automatisch als Plugin installiert.

Überprüfen Sie die Installation mit dem folgenden Befehl:

docker compose version

Wenn die Installation korrekt ist, sollten Sie eine ähnliche Ausgabe sehen:

Docker Compose version v2.x.x

Wenn Sie einen Fehler wie docker: 'compose' is not a docker command sehen, installieren Sie das Plugin manuell:

sudo apt install docker-compose-plugin

6-2. Vorteile von Docker Compose

Die wichtigsten Vorteile von Docker Compose sind:

  • Einheitliche Verwaltung mehrerer Container (Starten, Stoppen, Neustarten)
  • Konfiguration als Code, um reproduzierbare Umgebungen sicherzustellen
  • Einfaches Teilen von Anwendungs-, API- und Datenbank-Setups
  • Starten von Entwicklungsumgebungen mit einem einzigen docker compose up

Damit wird Docker Compose nahezu unverzichtbar für die Anwendungsentwicklung.

6-3. Grundstruktur einer Compose-Konfigurationsdatei

Docker Compose verwendet eine Datei namens docker-compose.yml (oder compose.yaml), um Services zu definieren.
Als minimales Beispiel erstellen Sie eine einfache Konfiguration, die Nginx startet.

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

Führen Sie den folgenden Befehl im Verzeichnis aus, das die Datei enthält:

docker compose up -d

Nginx wird im Hintergrund gestartet. Rufen Sie http://localhost:8080 in Ihrem Browser auf, um dies zu bestätigen.

6-4. Beispiel: Multi-Container-Setup (Web + Datenbank)

Die wahre Stärke von Compose wird deutlich, wenn mehrere Container gleichzeitig verwaltet werden.
Zum Beispiel kann das Ausführen einer Webanwendung zusammen mit MySQL wie folgt konfiguriert werden:

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

Erläuterung:

  • depends_on stellt sicher, dass die Datenbank vor der Anwendung startet
  • volumes bewahrt die Datenbankdaten dauerhaft
  • Mehrere Services werden in einer einzigen YAML-Datei verwaltet

Dies ist ein sehr praktisches Muster für Entwicklungsumgebungen.

6-5. Häufig verwendete Docker Compose Befehle

Diese Befehle sind nützlich, um sie auswendig zu lernen:

CommandDescription
docker compose up -dStart containers in the background
docker compose downStop and remove containers and networks
docker compose buildBuild images using Dockerfile
docker compose psList containers managed by Compose
docker compose logs -fView logs (optionally per service)

Mit Compose können Sie identische Umgebungen wiederholt reproduzieren, was es ideal für die Teamentwicklung macht.

6-6. Empfohlene Anwendungsfälle für Compose in der Entwicklung

  • Ein-Klick-Lokale-Umgebungseinrichtung
  • Testen in Umgebungen, die der Produktion nahekommen
  • Starten kombinierter Services wie Datenbanken, Caches und Message Queues
  • Persistente Datenspeicherung mit Volumes
  • Verwaltung der Konfiguration mit .env-Umgebungsvariablen
  • Unterstützung komplexer Microservice-Architekturen

Sobald Sie mit Docker und Compose vertraut sind, wird die Einrichtungszeit der Umgebung drastisch reduziert, was die Entwicklungseffizienz erheblich steigert.

7. Sicherheits- und Betriebsüberlegungen

Docker ist ein äußerst leistungsfähiges und praktisches Werkzeug, aber „containerisiert zu sein“ bedeutet nicht automatisch „sicher“.
Bei regelmäßiger Nutzung von Docker unter Ubuntu gibt es mehrere wichtige Sicherheits- und Betriebsaspekte, die Sie verstehen sollten.

Dieser Abschnitt fasst das wesentliche Wissen zur sicheren und stabilen Nutzung von Docker zusammen, sodass es selbst für Anfänger leicht verständlich ist.

7-1. Die Docker-Gruppe hat „praktisch Root“-Privilegien

Die zuvor konfigurierte Docker-Gruppe gewährt tatsächlich sehr starke Privilegien.
Benutzer, die zur Docker-Gruppe gehören, können das Host-Betriebssystem über den Docker‑Socket steuern, was praktisch einem Root‑Zugriff entspricht.

● Wichtige Punkte, die zu beachten sind

  • Fügen Sie auf gemeinsam genutzten Servern keine beliebigen Benutzer zur Docker-Gruppe hinzu
  • Verstehen Sie die Konsequenzen, nicht nur die Bequemlichkeit von „kein sudo erforderlich“
  • In Organisationen mit strengen Sicherheitsrichtlinien kann die Genehmigung eines Administrators erforderlich sein

Dies ist selten ein Problem auf persönlichen Ubuntu‑Maschinen oder Entwicklungs-PCs, aber auf Produktionsservern ist ein sorgfältiges Urteil erforderlich.

7-2. Rootless Docker in Betracht ziehen (fortgeschrittene Option)

Docker bietet eine Funktion namens Rootless‑Modus, die es ermöglicht, den Docker‑Daemon unter einem normalen Benutzerkonto statt unter Root auszuführen.

Vorteile:

  • Reduziert das Risiko von Host‑OS‑Privilegien erheblich
  • Ermöglicht eine sicherere Docker‑Nutzung in Umgebungen mit strengen Sicherheitsanforderungen

Nachteile:

  • Einige Netzwerkfunktionen sind eingeschränkt
  • Die Konfiguration ist für Anfänger komplexer
  • Das Verhalten kann vom Standard‑Docker abweichen

Der rootlose Modus ist für die meisten Entwicklungs‑Use‑Cases nicht erforderlich,
kann jedoch in Unternehmens‑ oder Compliance‑Umgebungen eine sinnvolle Option sein.

7-3. Aufräumen ungenutzter Images und Container

Im Laufe der Zeit kann Docker viel Festplattenspeicher verbrauchen, ohne dass Sie es bemerken.
Ungenutzte Container, Images und Volumes können sich ansammeln und leicht 100 GB überschreiten.

● Befehle zum Entfernen ungenutzter Ressourcen

Entfernen ungenutzter Images

docker image prune

Entfernen von Containern und Netzwerken zusammen

docker system prune

Aggressive Bereinigung (mit Vorsicht verwenden)

docker system prune -a

Die Option -a entfernt alle ungenutzten Images, daher vorsichtig einsetzen.

7-4. Vermeiden Sie die Verwendung des „latest“-Tags in der Produktion

Während Tags wie nginx:latest während der Entwicklung praktisch sind, werden sie für den Produktionseinsatz nicht empfohlen.

Gründe:

  • Die genaue Version hinter latest ist nicht garantiert
  • Unerwartete Updates können Laufzeitfehler verursachen
  • Verlust der Reproduzierbarkeit führt zu instabilen Deployments

Empfohlener Ansatz: Versionen explizit festlegen

Beispiel:

image: nginx:1.25

Explizite Versionsangaben sind eine Grundregel für Produktionsumgebungen.

7-5. Verwenden Sie offizielle Basis‑Images in Dockerfiles

Beim Erstellen von Dockerfiles sollten Sie diese Richtlinien befolgen:

  • Bevorzugen Sie offizielle Images (Library‑Images)
  • Vermeiden Sie Images, die von unbekannten oder nicht vertrauenswürdigen Autoren gepflegt werden
  • Bei der Verwendung leichter OS‑Images wie Alpine prüfen Sie den Status der Schwachstellenunterstützung

Nicht vertrauenswürdige Images können Malware enthalten.
Selbst in Entwicklungsumgebungen sollten sie nach Möglichkeit vermieden werden.

7-6. Seien Sie vorsichtig beim Netzwerk‑ und Port‑Expose

Wenn Container Ports auf dem Host‑OS exponieren,
können sie von außen zugänglich werden.

Vorsichtsmaßnahmen:

  • Vermeiden Sie unnötige -p 80:80 Zuordnungen
  • Für lokale Nutzung nur an localhost binden, z. B. -p 127.0.0.1:8080:80
  • Kombinieren Sie dies mit Firewall‑Einstellungen wie UFW
  • Für die Produktion einen Reverse‑Proxy (wie Nginx) für bessere Sicherheit einsetzen

Das Port‑Management ist besonders kritisch auf VPS‑ oder cloud‑basierten Ubuntu‑Servern.

7-7. Protokollverwaltung bei Fehlern

Docker‑Logs können mit folgendem Befehl angezeigt werden:

docker logs <container-name>

Große Log‑Mengen können schnell Festplattenspeicher verbrauchen,
daher sollten Sie Log‑Treiber und Log‑Rotation konfigurieren.

8. Häufige Probleme und Fehlersuche

Obwohl Docker ein mächtiges Werkzeug ist, können auf Ubuntu unerwartete Fehler aufgrund von Umgebungsunterschieden oder Konfigurationsfehlern auftreten.
Dieser Abschnitt fasst häufige Probleme und deren Lösungen zusammen, von Einsteiger‑ bis Mittelstufenniveau.

8-1. Keine Verbindung zum Docker‑Daemon möglich

● Fehlermeldung

Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

● Ursachen und Lösungen

  1. Docker‑Daemon läuft nicht : sudo systemctl start docker
  2. Änderungen an der Docker‑Gruppe wurden nicht übernommen : Abmelden und wieder anmelden, oder newgrp docker ausführen
  3. Berechtigungsproblem mit /var/run/docker.sock : Sicherstellen, dass der Benutzer zur Docker‑Gruppe gehört

8-2. „Permission Denied“-Fehler

● Typischer Fehler

Got permission denied while trying to connect to the Docker daemon socket

● Lösung

Die Ursache ist fast immer eine fehlende Docker‑Gruppen‑Konfiguration.

sudo usermod -aG docker $USER

Dann abmelden und wieder anmelden.

8-3. GPG‑Fehler beim Hinzufügen des APT‑Repositories

● Fehlermeldungsbeispiele

NO_PUBKEY XXXXXXXX

or

The following signatures couldn't be verified

● Ursachen und Behebungen

  • GPG‑Schlüssel wurde nicht korrekt registriert
  • curl schlug wegen Netzwerkbeschränkungen fehl

Registrieren Sie den Schlüssel erneut mit:

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

Dann führen Sie erneut sudo apt update aus.

8-4. Portbindungs‑Konflikte

● Fehlermeldungsbeispiel

Bind for 0.0.0.0:80 failed: port is already allocated.

● Ursache

  • Der Port wird bereits von einem anderen Prozess auf dem Host verwendet.
  • Ein anderer Docker‑Container nutzt denselben Port.

● Lösungen

Prüfen, welcher Prozess den Port verwendet:

sudo lsof -i -P -n | grep :80

Laufende Container prüfen:

docker ps

Portzuordnung ändern:

-p 8080:80

8-5. Fehler beim Herunterladen von Images

● Häufige Ursachen

  • Netzwerkbeschränkungen (z. B. in Unternehmensumgebungen)
  • Probleme mit der DNS‑Konfiguration
  • Blockierter Zugriff auf Docker Hub

● Lösungen

  • DNS‑Server ändern (z. B. 1.1.1.1 oder 8.8.8.8)
  • Proxy‑Konfiguration überprüfen
  • Ein VPN verwenden, falls die Umgebung dies erfordert

8-6. Fehler wegen Speicherplatzmangels

● Typische Meldung

no space left on device

● Lösung

Unbenutzte Ressourcen entfernen:

docker system prune -a

Images, Container und Volumes überprüfen:

docker images
docker ps -a
docker volume ls

Speicherplatzmangel ist eines der häufigsten betrieblichen Docker‑Probleme.