So installieren Sie Docker unter Ubuntu

Docker Engine unterstützt 64-Bit-Ubuntu-Versionen, einschließlich 24.10 (Oracular), 24.04 LTS (Noble) und 22.04 LTS (Jammy), auf Architekturen wie amd64 (x86_64), arm64, armhf, s390x und ppc64le. Docker verlässt sich auf das iptables-Backend des Kernels und arbeitet mit den Schnittstellen iptables-nft oder iptables-legacy; Regeln, die direkt mit dem erstellt wurdennftTool werden vom Docker-Netzwerk nicht berücksichtigt. Wenn Sie eine Host-Firewall mit verwaltenufwoderfirewalldBeachten Sie, dass durch das Veröffentlichen von Container-Ports viele Regeln auf Hostebene umgangen werden. Fügen Sie der Richtlinie „Zulassen/Verweigern“ hinzuDOCKER-USER-Kette, um die Filterung vor den Docker-Regeln zu erzwingen.

Vor der Installation,Entfernen Sie alle widersprüchlichen Distributionspakete, um Versionskonflikte zu vermeiden. Inoffizielle Pakete wiedocker.io, Vermächtnisdocker-compose, oder bereits installiertcontainerd/runckann ein sauberes Setup blockieren.

Schritt 1:Entfernen Sie alte oder widersprüchliche Pakete.

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove -y "$pkg"; done

Schritt 2:Bestätigen Sie Ihre Ubuntu-Version und -Architektur, damit Sie das richtige Repository hinzufügen.

source /etc/os-release && echo "Ubuntu codename: ${UBUNTU_CODENAME:-$VERSION_CODENAME}"; dpkg --print-architecture

Methode 1: Installieren Sie die Docker Engine aus dem apt-Repository von Docker

Diese Methode installiert die neueste stabile Docker-Engine und Plugins über apt, sodass zukünftige Updates unkompliziert über Ihren Paketmanager erfolgen können.

Schritt 1:Installieren Sie die erforderlichen Pakete und fügen Sie den GPG-Schlüssel von Docker über einen modernen Schlüsselbundpfad hinzu (vermeidet veraltete).apt-keyVerwendung).

sudo apt-get update
sudo apt-get install -y 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

Schritt 2:Fügen Sie das Docker-Repository hinzu und aktualisieren Sie dann die Paketindizes.

echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

Schritt 3:Installieren Sie Docker Engine, CLI, Containerd, Buildx und Compose-Plugin.

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

Schritt 4:Bestätigen Sie, dass der Dienst ausgeführt wird, und führen Sie den Testcontainer aus.

sudo systemctl status docker --no-pager
sudo docker run hello-world

Schritt 5:Erlauben Sie Ihrem Benutzer, Docker ohne sudo auszuführen (optional, aber praktisch). Dadurch wird Ihr Konto zum hinzugefügtdockerGruppe, die Root-äquivalenten Zugriff auf den Docker-Daemon hat – fügen Sie nur vertrauenswürdige Benutzer hinzu.

sudo usermod -aG docker $USER
newgrp docker  # or log out and back in
docker run hello-world

Schritt 6:Später mit apt upgraden. Sie können eine bestimmte Version anpinnen, wenn Sie eine Übereinstimmung mit einer Umgebung benötigen.

# Show available engine versions
apt-cache madison docker-ce | awk '{ print $3 }'

# Install a specific version (example version string)
VERSION_STRING=5:28.3.3-1~ubuntu.24.04~noble
sudo apt-get install -y docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

Methode 2: Installation von heruntergeladenen .deb-Paketen (Offline-/manuelle Upgrades)

Verwenden Sie diese Option, wenn Hosts nicht auf das Repository zugreifen können oder wenn Sie eine reproduzierbare Offline-Installation benötigen. Sie laden manuell passende .deb-Dateien für Ihre Ubuntu-Version und -Architektur herunter.

Schritt 1:Navigieren Sie in einem Browser zum Ubuntu-Repository von Docker und wählen Sie unten Ihre Version ausdists/. Dann öffnenpool/stable/<arch>/(z.B,amd64oderarm64).

Schritt 2:Laden Sie die folgenden Pakete herunter, die derselben Version entsprechen:

  • containerd.io_<version>_<arch>.deb.
  • docker-ce_<version>_<arch>.deb.
  • docker-ce-cli_<version>_<arch>.deb.
  • docker-buildx-plugin_<version>_<arch>.deb.
  • docker-compose-plugin_<version>_<arch>.deb.

Schritt 3:Installieren Sie die Pakete mitdpkg. Ersetzen Sie die Pfade durch den Ort, an dem Sie die Dateien heruntergeladen haben.

sudo dpkg -i ./containerd.io_*_*.deb 
  ./docker-ce_*_*.deb 
  ./docker-ce-cli_*_*.deb 
  ./docker-buildx-plugin_*_*.deb 
  ./docker-compose-plugin_*_*.deb

Schritt 4:Starten Sie den Dienst, wenn er nicht automatisch gestartet wurde, und überprüfen Sie ihn anhand des Testbilds.

Siehe auch:So aktivieren Sie Wake-on-LAN in Ubuntu

sudo service docker start
sudo docker run hello-world

Wartungstipp:Wiederholen Sie den Download und die Installation, wenn Sie ein Upgrade durchführen müssen. Manuelle Installationen folgen nicht den regelmäßigen Updates von apt.

Methode 3: Installation mit dem Komfortskript von Docker (schnelle Einrichtung für Entwicklung/Test)

Das Drehbuch unterget.docker.comerkennt Ihre Distribution und installiert Docker nicht interaktiv. Es ist schnell, aber eigensinnig und nicht für Produktions-Upgrades konzipiert.

Schritt 1:Sehen Sie sich eine Vorschau an, was das Skript tun wird.

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

Schritt 2:Führen Sie das Skript aus, um die neueste stabile Docker Engine, Containerd und Runc zu installieren.

sudo sh ./get-docker.sh

Schritt 3:Überprüfen und konfigurieren Sie optional die Nicht-Root-Nutzung.

sudo docker run hello-world
sudo usermod -aG docker $USER && newgrp docker

Vorsicht:Das erneute Ausführen des Skripts zum Upgrade kann zu Abhängigkeiten bei unerwarteten Versionen führen. Verwenden Sie Ihren Paketmanager für laufende Upgrades nach dem ersten Bootstrap.

Optional: Docker Desktop auf Ubuntu installieren (GUI)

Docker Desktop bündelt eine GUI, Docker Engine, Docker CLI, Docker Compose V2 und optional Kubernetes für Entwickler-Workflows. Es erfordert Ubuntu 22.04, 24.04 oder das neueste Nicht-LTS auf x86-64. Nicht-GNOME-Desktops sollten installiert werdengnome-terminalzur Unterstützung integrierter Terminals. Für die kommerzielle Nutzung in größeren Unternehmen ist möglicherweise ein kostenpflichtiges Abonnement gemäß den Docker-Bedingungen erforderlich.

Schritt 1:Richten Sie das Paket-Repository von Docker ein (derselbe Schlüsselbund- und Repo-Schritt wie in Methode 1), damit Abhängigkeiten sauber aufgelöst werden.

# If not already configured:
sudo apt-get update
sudo apt-get install -y 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
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu 
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Schritt 2:Laden Sie Docker Desktop .deb für Linux (amd64) herunter und installieren Sie es.

# Example for amd64; replace with the file you downloaded
sudo apt-get install -y ./docker-desktop-amd64.deb

Schritt 3:Starten Sie Desktop und stellen Sie bei Bedarf den automatischen Start ein.

# Start for current user session
systemctl --user start docker-desktop

# Enable on login (optional)
systemctl --user enable docker-desktop

Hinweise:Docker Desktop erstellt einen dedizierten Docker-Kontext, um Konflikte mit einer lokalen Engine auf dem Host zu vermeiden. In Serverumgebungen ist die alleinige Ausführung der Docker Engine in der Regel einfacher und vermeidet Desktop-Abhängigkeiten.

Überprüfungen nach der Installation und allgemeine Aufgaben

Überprüfen Sie, ob Docker funktioniert:Das Abrufen und Ausführen des Testimages beweist, dass der Daemon, das Netzwerk und der Registrierungszugriff funktionieren.

docker run hello-world

Führen Sie einen schnellen Webcontainer aus:Ordnen Sie einen Host-Port zu, um zu bestätigen, dass die Port-Veröffentlichung funktioniert:

docker run -d -p 8080:80 --name web nginx
docker ps

Beim Booten starten (Engine auf Servern):Stellen Sie sicher, dass der Daemon nach dem Neustart startet.

sudo systemctl enable docker

Fehlerbehebung

Veraltete Apt-Key-Warnungen:Verwenden Sie die oben gezeigte Schlüsselring-Methode (/etc/apt/keyrings/docker.asc) anstattapt-key. Dadurch wird die Warnung entfernt und der Schlüssel bleibt auf das Docker-Repository beschränkt.

Fehler beim Abrufen des GPG-Schlüssels (keine Routen-, Proxy- oder TLS-Probleme):Überprüfen Sie die ausgehende 443-Konnektivität, Unternehmens-Proxys oder DNS. Wenn hinter einem Proxy, legen Sie festhttps_proxy/http_proxyfür deine Schale und fürcurl. Überprüfen Sie, ob Sie erreichbar sindhttps://download.docker.com/mit einem einfachencurl -I.

docker: command not found:Die CLI ist nicht installiert oder nicht in IhremPATH. Installieren Sie die Pakete von Methode 1 neu oder überprüfen Sie sie/usr/bin/dockerexistiert.

Es kann keine Verbindung zum Docker-Daemon hergestellt werden:Stellen Sie sicher, dass der Dienst ausgeführt wird und Sie sich im befindendockerGruppe, wenn sie ohne Sudo ausgeführt wird.

sudo systemctl status docker
sudo systemctl start docker
sudo usermod -aG docker $USER && newgrp docker

Image-Pulls hängen oder schlagen mit TLS-Handshake-Timeout fehl:Überprüfen Sie die Internet-Routing-, DNS- oder Unternehmens-Proxy-Konfiguration. Synchronisieren Sie die Systemzeit (NTP), da große Abweichungen TLS unterbrechen können. Testen Sie erneut mit einem einfachen Bild wiehello-worldum Probleme beim Zugriff auf die Registrierung zu isolieren.

UFW/firewalld und veröffentlichte Ports:Die NAT/Forward-Regeln von Docker können Host-Firewall-Richtlinien für veröffentlichte Ports umgehen. Fügen Sie Regeln zum Zulassen/Verweigern einDOCKER-USERKette, sodass sie vor den Docker-Regeln ausgewertet werden. Stellen Sie außerdem sicher, dass Ihr System eine von Docker unterstützte iptables-Schnittstelle (NFT oder Legacy) und nicht Raw verwendetnftRegeln.

WSL ohne systemd:Wenn die Meldung „System wurde nicht mit systemd gebootet“ angezeigt wird, verwalten Sie Docker über Docker Desktop für Windows oder aktivieren Sie systemd in den Einstellungen Ihrer WSL-Distribution. DirektsystemctlBefehle funktionieren nicht ohne systemd.

Deinstallieren Sie die Docker Engine vollständig

Schritt 1:Pakete entfernen.

sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

Schritt 2:Löschen Sie Docker-Datenverzeichnisse (dadurch werden Bilder, Container und Volumes entfernt).

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Schritt 3:Entfernen Sie das Repository und den Schlüsselring, wenn Sie keine Neuinstallation durchführen möchten.

sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.asc

Wenn Docker installiert und verifiziert ist, können Sie Container sofort starten und bei Bedarf mit Compose oder Buildx verwalten. Sorgen Sie dafür, dass die Systemzeit korrekt ist, beobachten Sie das Firewall-Verhalten und aktualisieren Sie über apt, um mit Sicherheitsupdates auf dem neuesten Stand zu bleiben.

Related Posts