it-swarm.com.de

Der Docker-Befehl kann keine Verbindung zum Docker-Dämon herstellen

Ich möchte zu Docker wechseln, also habe ich gerade angefangen, mich damit zu beschäftigen. Ich habe Docker auf einer VirtualBox Ubuntu 15.10 (Wily Werewolf) Installation installiert und als hier vorgeschlagen habe ich dann versucht, ein einfaches nginx Docker-Image auszuführen:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Also habe ich überprüft, ob Docker läuft:

$ Sudo service docker status
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since vr 2015-11-06 08:41:48 CET; 15min ago
     Docs: https://docs.docker.com
 Main PID: 7542 (docker)
   CGroup: /system.slice/docker.service
           └─7542 /usr/bin/docker daemon -H fd://

nov 06 08:41:47 kramer65-VirtualBox systemd[1]: Starting Docker Application Container Engine...
nov 06 08:41:47 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:47.900410966+01:00" level=info msg="API ...ock"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.033514149+01:00" level=info msg="Fire...lse"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.141594321+01:00" level=info msg="Defa...ess"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.416294436+01:00" level=warning msg="Y...it."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.565507576+01:00" level=info msg="Load...rt."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567907022+01:00" level=info msg="Load...ne."
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567945214+01:00" level=info msg="Daem...ion"
nov 06 08:41:48 kramer65-VirtualBox docker[7542]: time="2015-11-06T08:41:48.567969891+01:00" level=info msg="Dock....9.0
nov 06 08:41:48 kramer65-VirtualBox systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

Dies deutet darauf hin, dass der Docker-Dämon tatsächlich bereits läuft, aber um sicher zu gehen, dass ich den Docker-Dämon gerade manuell gestartet habe:

$ Sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock           
INFO[0000] [graphdriver] using prior storage driver "aufs" 
INFO[0000] Firewalld running: false                     
INFO[0000] Default bridge (docker0) is assigned with an IP address XXX.XX.X.X/XX. Daemon option --bip can be used to set a preferred IP address 
WARN[0000] Your kernel does not support swap memory limit. 
INFO[0000] Loading containers: start.                   

INFO[0000] Loading containers: done.                    
INFO[0000] Daemon has completed initialization          
INFO[0000] Docker daemon                                 commit=76d6bc9 execdriver=native-0.2 graphdriver=aufs version=1.9.0

Ich habe dann versucht, das Bild erneut auszuführen, aber mit dem gleichen Ergebnis:

$ docker run --name mynginx1 -P -d nginx
Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Ich habe versucht, Sudo'ing den Befehl auszuführen, aber ohne Erfolg. Was mache ich hier falsch? 

227
kramer65

Sie müssen Ihren aktuellen Benutzer (sofern Sie als Ubuntu angemeldet sind) zur Docker-Gruppe hinzufügen, wie folgt

Sudo usermod -aG docker $(whoami)

dann logout & login erneut in das System oder starte das System neu . test mit docker version

weitere Informationen zum Installieren der Docker-Engine finden Sie in der Docker-Dokumentation

426
Zubair Alam

Fügen Sie den Benutzer der Andockgruppe hinzu

  • Fügen Sie die Docker-Gruppe hinzu, falls diese noch nicht vorhanden ist:

    Sudo groupadd docker

  • Fügen Sie den verbundenen Benutzer "$ {USER}" der Docker-Gruppe hinzu:

    Sudo gpasswd -a ${USER} docker

  • Starten Sie den Docker-Daemon neu:

    Sudo service docker restart

  • Führen Sie entweder einen newgrp docker durch oder loggen Sie sich aus/ein, um die Änderungen an.

135
neo

Normalerweise macht der folgende Befehl den Trick:

Sudo service docker restart

Dies ist anstelle von docker start für die Fälle, in denen Docker bereits ausgeführt wird. 

Wenn dies funktioniert, wie vorgeschlagen und in einer anderen Antwort und auf dieser GitHub-Ausgabe , wenn Sie sich nicht selbst in die Docker-Gruppe eingefügt haben, führen Sie Folgendes aus:

Sudo usermod -aG docker <your-username> 

Und du bist höchstwahrscheinlich gut zu gehen.


Wie bei allen anderen, die darauf stoßen, startet das Docker in manchen Betriebssystemen nicht direkt nach der Installation und daher erscheint derselbe can't connect to daemon message. In diesem Fall können Sie zunächst überprüfen, ob Docker tatsächlich nicht ausgeführt wird, indem Sie den Status Ihres Docker-Dienstes überprüfen, indem Sie Folgendes ausführen:

Sudo service docker status

Wenn die Ausgabe ungefähr so ​​aussieht: docker stop/waiting anstelle von docker start/running, process 15378, bedeutet dies offensichtlich, dass Docker nicht aktiv ist. In diesem Fall beginnen Sie mit:

Sudo service docker start

Und nach wie vor werden Sie höchstwahrscheinlich gut sein.

hinweis an mich selbst: Ich erhalte den Fehler aus dem Titel der Frage, wenn ich vergesse, den Befehl docker mit Sudo auszuführen:

Sudo docker run ...

[Ubuntu 15.10]

18
Martin Vseticka

Hatte das gleiche Problem und was für mich funktionierte war:
Überprüfung des Eigentums von /var/run/docker.sock 

ls -l /var/run/docker.sock

Wenn Sie nicht der Eigentümer sind, ändern Sie den Besitz mit dem Befehl

Sudo chown *your-username* /var/run/docker.sock

Dann können Sie die Docker-Befehle problemlos ausführen: D

10
kevthanewversi

Schließen Sie nach der Installation alles und starten Sie den Dienst. Schließen Sie das Terminal und öffnen Sie es erneut. Ziehen Sie dann das Image

Bearbeiten

Ich hatte auch dieses issue wieder, falls die obige Lösung nicht funktioniert, versuchen Sie diese Lösung das ist der Befehl unten

Sudo mv /var/lib/docker/network/files/ /tmp/dn-bak

Überlegungen

Wenn der obige Befehl funktioniert, haben Sie wahrscheinlich Probleme mit dem Netzwerkdocker. Dies kann jedoch trotzdem gelöst werden. Um dies zu bestätigen, sehen Sie das Protokoll mit dem folgenden Befehl

tail -5f /var/log/upstart/docker.log

Wenn die Ausgabe so etwas hat

FATA[0000] Error starting daemon: Error initializing network controller: could not delete the default bridge network: network bridge has active endpoints 
/var/run/docker.sock is up

Sie sind wirklich mit Netzwerkproblemen konfrontiert, aber ich weiß noch nicht, ob Ihr OS beim nächsten Neustart (update, 2 Monate kein Problem erneut) wieder auftritt und ob es sich um ein Problem handelt Fehler oder Installationsproblem

Meine Docker-Version

Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/AMD64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/AMD64
9
deFreitas

Nach der Installation des Dockers auf Ubuntu habe ich den folgenden Befehl ausgeführt:

Sudo service docker start

Hast du es versucht?

8
yushulx

Ich hatte das gleiche Problem. Seit zwei Tagen kämpfen, um es zu lösen.

Es funktionierte nur, wenn ich es tat:

  1. Gemäß Docker's Tutorial müssen Sie den Docker-Schlüssel hinzufügen, falls noch nicht Folgendes hinzugefügt wurde:

    $ Sudo wget -qO- https://get.docker.com/gpg | Sudo apt-key add -

  2. Stellen Sie dann sicher, dass Sie sich Dockerprivilegien gewähren, indem Sie Folgendes verwenden:

    $ Sudo usermod -aG docker $USER

Hoffe das hilft dir auch.

6
AmrMohallel

Für [~ # ~] osx [~ # ~] :

Nach dem Öffnen von Docker und dem Starten des Standardcomputers über das Quickstart-Terminal ( https://docs.docker.com/engine/installation/mac/ ) versuchen Sie Docker-Befehle und erhalten diese "Dose". t connect to docker daemon ", es stellt sich heraus, dass Sie einige env-Variablen setzen müssen :

eval "$(docker-machine env default)"

Dann probieren Sie es mit docker run hello-world um zu sehen, ob alles pfirsichfarben ist.

5
Danny

geben Sie als root (Sudo su) ein und versuchen Sie Folgendes:

unset DOCKER_Host
docker run --name mynginx1 -P -d nginx

Ich habe hier das gleiche Problem, und der Docker-Befehl funktionierte nur als root und auch mit diesem DOCKER_Host leer

PS: Beachten Sie auch, dass der korrekte und offizielle Weg zur Installation von auf Ubuntu die Verwendung ihrer geeigneten Repositorys ist (sogar am 15.10.), Nicht mit diesem "wget" Ding.

5
Daniel Loureiro

Für diejenigen, die bereits einen Neustart Ihres Rechners versucht haben, und die Umgebungsvariable DOCKER_Host wie in der docker env-Dokumentation angegeben aufheben und alle anderen versuchen einfach, mit der 

Sudo service docker restart

Nur das hat mir auch nach dem Neustart der Maschine geholfen.

3
Mr.Moe

Diese Frage ist derzeit die Nummer 3 bei einer Google-Suche. Nachdem ich einige Nachforschungen zur Lösung dieses Problems auf meinem Linux-System durchgeführt hatte, dachte ich, ich würde diese Antwort schreiben. Der ursprüngliche Beitrag besagt, dass das Problem auf Ubuntu liegt, aber ich habe auch das Problem mit Fedora erlebt. In diesem Sinne habe ich das Problem behoben. 

Auf Fedora 22

Docker installieren:

$> curl -fsSL https://get.docker.com/ | sh

Nach der Installation von Docker:

Ein Benutzer muss der Andockgruppe hinzugefügt werden.

$> Sudo usermod -aG docker

Der Docker-Daemon muss gestartet werden

$> Sudo service docker start

Sie können den Daemon so einstellen, dass er beim Booten gestartet wird

$> Sudo chkconfig docker on

Sie können überprüfen, ob der Andockdienst ausgeführt wird

$> service docker status

Und noch eine letzte Prüfung

$> docker run hello-world
3
Ronald Weidner

Nicht-Root-Zugriff gewähren - über Docker

Fügen Sie die Docker-Gruppe hinzu, falls diese noch nicht vorhanden ist.

$ Sudo groupadd docker

Fügen Sie den verbundenen Benutzer "$ {USER}" zur Andockgruppe hinzu.

Ändern Sie den Benutzernamen so, dass er Ihrem bevorzugten Benutzer entspricht.

Möglicherweise müssen Sie sich abmelden und erneut anmelden, damit Wirksam wird.

$ Sudo gpasswd -a ${USER} docker

Starten Sie den Docker-Daemon neu.

$ Sudo service docker restart

Für Ubuntu:
Ist mit mir passiert, als ich das Docker aktualisiert habe.
Sie müssen den Dienst und den Socket demaskieren und den Dienst neu starten.

.__ Folgendes arbeitete für mich:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

Was hinter den Kulissen passiert ist
systemd kann auch eine Einheit als vollständig nicht startfähig markieren, automatisch oder manuell, indem sie mit/dev/null verknüpft wird. Dies wird als Maskierung der Einheit bezeichnet und ist mit dem Befehl mask möglich.

Sudo systemctl mask docker.service

Sie können die Liste der maskierten Dienste überprüfen, indem Sie

Sudo systemctl list-unit-files

 Output of Sudo systemctl list-unit-files

Um den automatischen/manuellen Start des Dienstes zu aktivieren, müssen Sie die Demaskierung mit folgendem Befehl vornehmen:

Sudo sytemctl unmask docker.service

Nun wird der Dienst wie unten gezeigt aktiviert  enter image description here

2
lordzuko

Ich habe das gleiche Problem, während ich Docker ausgeführt habe.

sie können Befehle als Sudo user ausführen:

Sudo docker ***your command here***
2
Dadaso Zanzane

Versuchen Sie "Sudo" mit dem Befehl zu verwenden, den Sie ausführen. 

2
user3737461

Da sich Docker an einen Unix-Socket bindet, der root beim Start gehört, funktioniert die Verwendung von 'Sudo' zusammen mit den Docker-Befehlen.

1
raja
  1. Ich hatte auch das gleiche Problem. Das Problem bestand in Sockets, die Docker-Daemon und Docker-Client zugewiesen wurden.
  2. Erstens wurde für den Docker-Client in docker.sock keine Berechtigung festgelegt. Sie können sie mit "Sudo usermod -aG docker $ USER" festlegen.
  3. Dann überprüfen Sie Ihre bash-Datei, in der der Docker-Client ausgeführt wird. Für mich war es 0.0.0.0:2375, während der Docker-Daemon auf einem Unix-Socket ausgeführt wurde (dies wurde in der Konfigurationsdatei von dockerd festgelegt).
  4. Kommentieren Sie einfach die Bash-Linie und es wird gut funktionieren.
  5. Wenn Sie jedoch den TCP -Port anstelle des Unix-Sockets verwenden möchten, ändern Sie die Konfigurationsdatei von dockerd und setzen Sie sie auf 0.0.0.0.2375. Behalten Sie die Zeile in der Bash-Datei bei, falls vorhanden, oder setzen Sie sie auf 0.0.0.0:2375.
1
Nilesh Kande

Ich habe denselben Fehler in der Amazon EC2-Instanz festgestellt. Das Problem wurde nach dem Neustart der Instanz behoben.

0
Sumit Bhoyar

Vielleicht hilft dies jemandem, da die Fehlermeldung äußerst wenig hilfreich ist und ich alle Standard-Berechtigungsschritte mehrmals ohne Erfolg durchlaufen habe.

Das Docker lässt gelegentlich Ghost-Umgebungsvariablen an Ort und Stelle, die den Zugriff blockieren, obwohl Ihr System ansonsten korrekt eingerichtet ist. Die folgenden Shell-Befehle machen es möglicherweise wieder verfügbar, wenn Sie es einmal ausgeführt haben und nach einem Neustart die Zusammenarbeit beendet haben:

unset DOCKER_Host
unset DOCKER_TLS_VERIFY
unset DOCKER_TLS_PATH
docker ps

Ich hatte bereits eine funktionierende Docker-Installation, und nachdem ich meinen Laptop neu gestartet hatte, wollte er einfach nicht funktionieren. Wurde der Docker-Benutzergruppe korrekt hinzugefügt, hatte die richtigen Berechtigungen für den Socket usw., konnte jedoch noch nicht docker login, docker run ... usw. ausgeführt werden. Dies behebte das Problem für mich. Leider muss ich dies bei jedem Neustart ausführen. Dies wird auch bei einigen github-Problemen erwähnt als Workaround, obwohl es wie ein Fehler erscheint, dass dies ein dauerhaftes Hindernis für den korrekten Betrieb von Docker ist (Hinweis: Ich arbeite unter Arch Linux, nicht unter OSX, aber das war das gleiche Problem für mich).

0
mopsyd

Getestet in Ubuntu 16.04

# Create the docker group and add your user to the docker group
groupadd docker
usermod -aG docker $USER
newgrp docker

# Configure docker service to be exposed
mkdir -p /etc/systemd/system/docker.service.d
echo -e '[Service]\nExecStart=\nExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376' >> /etc/systemd/system/docker.service.d/override.conf

# restart service
systemctl daemon-reload
service docker restart
0
thiagofalcao

Für Ubuntu 16.04

In der Datei /lib/systemd/system/docker.service ändern:

ExecStart=/usr/bin/dockerd fd://

mit:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375

In der Datei /etc/init.d/docker ändern:

DOCKER_OPTS=

mit:

DOCKER_OPTS="-H tcp://0.0.0.0:2375"

und starten Sie Ihren Computer neu.

0
user6646280

Aktuellen Benutzer zur Docker-Gruppe hinzufügen:

Sudo usermod -aG docker $(whoami)

0
BALAJI POTHULA