619 Stimmen

Docker kann keine Verbindung zum Docker-Dämon herstellen

Nachdem ich meine Docker-Version auf 0.8.0 aktualisiert habe, erhalte ich beim Eingeben von sudo docker version eine Fehlermeldung:

Client-Version: 0.8.0
Go-Version (Client): go1.2
Git-Commit (Client): cc3a8c8
2014/02/19 12:54:16 Kann keine Verbindung zum Docker-Dämon herstellen. Läuft 'docker -d' auf diesem Host?

Ich habe den Anweisungen folgt und den Befehl sudo docker -d eingegeben, und ich habe dies erhalten:

[/var/lib/docker|2462000b] +job initserver()
[/var/lib/docker|2462000b.initserver()] Server wird erstellt
open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: Datei oder Verzeichnis nicht gefunden[/var/lib/docker|2462000b] -job initserver() = ERR (1)
2014/02/19 12:55:57 initserver: open /var/lib/docker/aufs/layers/cf2414da53f9bcfaa48bc3d58360d7f1cfd3784e4fe51fbef95197709dfc285d: Datei oder Verzeichnis nicht gefunden

Wie löse ich das Problem?

777voto

molavec Punkte 8461

Linux

Die Dokumentation zu den Nachinstallationsschritten für Linux zeigt die folgenden Schritte:

  1. Erstelle die docker Gruppe. sudo groupadd docker
  2. Füge den Benutzer zur docker Gruppe hinzu. sudo usermod -aG docker $(whoami)
  3. Melde dich ab und wieder an, um sicherzustellen, dass Docker mit den richtigen Berechtigungen läuft.
  4. Starte Docker. sudo service docker start

Mac OS X

Wie Dayel Ostraco sagt, ist es erforderlich, Umgebungsvariablen hinzuzufügen:

docker-machine start # Starte die virtuelle Maschine für Docker
docker-machine env  # Es hilft, die Umgebungsvariablen zu erhalten
eval "$(docker-machine env default)" # Setze die Umgebungsvariablen

Der Befehl docker-machine start gibt Anweisungen aus, um den Prozess zu leiten.

210voto

kenorb Punkte 134883

Linux

Um den Docker-Daemon auf Linux (von CLI) auszuführen, führen Sie aus:

$ sudo service docker start # Ubuntu/Debian

Hinweis: Beim Kopieren und Einfügen den $-Zeichen weglassen.

Auf RedHat/CentOS führen Sie aus: sudo systemctl start docker.

Um das "base" Dateisystem zu initialisieren, führen Sie aus:

$ sudo service docker stop
$ sudo rm -rf /var/lib/docker
$ sudo service docker start

oder manuell wie folgt:

$ sudo docker -d --storage-opt dm.basesize=20G

Installieren Sie docker-machine auf Linux

Um die Maschinen-Binärdateien auf Linux zu installieren:

  • lokal:

    install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) $HOME/bin/docker-machine
  • global:

    sudo bash -c 'install -vm755 <(curl -L https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine'

macOS

Auf macOS ist die docker-Binärdatei nur ein Client und Sie können sie nicht verwenden, um den Docker-Daemon auszuführen, da der Docker-Daemon Linux-spezifische Kernel-Features verwendet. Daher können Sie Docker nicht nativ unter OS X ausführen. Sie müssen also docker-machine installieren, um eine VM zu erstellen und damit zu verbinden.

Installieren Sie docker-machine auf macOS

Wenn Sie den Befehl docker-machine noch nicht haben, installieren Sie ihn mit einer der folgenden Methoden:

  • Verwenden des Brew-Befehls: brew install docker-machine docker.
  • manuell von GitHub:

    install -v <(curl https://github.com/docker/machine/releases/download/v0.5.3/docker-machine_linux-amd64) /usr/local/bin/docker-machine

Siehe: Erste Schritte mit Docker für Mac.

Konfigurieren Sie docker-machine auf macOS

Um Docker Machine über Homebrew zu starten, führen Sie aus:

brew services start docker-machine

Um eine default-Maschine zu erstellen (falls Sie keine haben, siehe: docker-machine ls):

docker-machine create --driver virtualbox default

Richten Sie dann die Umgebung für den Docker-Client ein:

eval "$(docker-machine env default)"

Überprüfen Sie dann durch Auflisten von Containern:

docker ps

Siehe: Erste Schritte mit Docker Machine und einer lokalen VM.


Installieren Sie Docker.app auf macOS

Als Alternative zur obigen Lösung können Sie eine Docker-App installieren, indem Sie ausführen:

brew cask install docker

Überprüfen Sie diesen Beitrag für weitere Details. Siehe auch: Kann keine Verbindung zum Docker-Daemon auf macOS herstellen

143voto

Dayel Ostraco Punkte 1753

Wenn Sie Docker auf OS X ausführen, hat das folgende eval bei mir funktioniert.

eval "$(docker-machine env default)"

Wenn Sie es bevorzugen, diesen eval-Befehl nicht bei jeder Terminal-Sitzung ausführen zu müssen, können Sie dies zu Ihrem bash_profile hinzufügen:

#Docker
eval "$(docker-machine env default)"

Vergewissern Sie sich, dass Sie die Terminal-Sitzung neu starten oder source auf bash_profile ausführen, damit die Änderungen wirksam werden.

101voto

K.A.D. Punkte 3598

Nach einer ausführlichen Untersuchung scheint dieses Problem jedes Mal nach dem Neustart von Mac OS X (oder nach dem Neustart der Docker-Virtualmaschine) aufzutreten, was verhindert, dass der Docker-Client eine Verbindung zum Docker-Daemon herstellt.

Um das Problem zu lösen, können Sie entweder:

A) Docker Toolbox mithilfe des offiziellen Installationsprogramms neu installieren (https://www.docker.com/products/docker-toolbox) oder einfach

B) Führen Sie die folgenden Befehle nacheinander aus:

# Stellen Sie zunächst sicher, dass die virtuelle Maschine läuft
docker-machine start default

# Generieren Sie TLS-Verbindungszertifikate neu, erfordert Bestätigung
docker-machine regenerate-certs default

# Schließlich Umgebungsvariablen setzen
eval "$(docker-machine env default)"

C) Genauso wie (B) können Sie auch die folgende Zeile kopieren und einfügen, um alle drei Befehle auszuführen:

docker-machine start default; docker-machine regenerate-certs default; eval "$(docker-machine env default)"

Falls Sie den folgenden Fehler erhalten:

Fehler beim Abrufen des SSH-Befehls: Bei der Ausführung eines SSH-Befehls ist etwas schiefgegangen!
Befehl: cat /etc/os-release
Fehler: Exit-Status 255
Ausgabe:

führen Sie einfach die drei Befehle ein weiteres Mal aus, und es sollte beim zweiten Mal funktionieren.

53voto

nPcomp Punkte 6837

Dies geschieht normalerweise, wenn Sie nicht Mitglied der docker-Gruppe sind. Sie können sich der docker-Gruppe mit folgendem Befehl hinzufügen:

sudo usermod -aG docker ihrbenutzername

oder

sudo usermod -aG docker $(whoami)

Nach diesem Schritt müssen Sie sich abmelden und wieder am Server anmelden.

Alternativ können Sie jeden Docker-Befehl mit sudo ausführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X