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?
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
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.
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]
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
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
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
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
Nach der Installation des Dockers auf Ubuntu habe ich den folgenden Befehl ausgeführt:
Sudo service docker start
Hast du es versucht?
Ich hatte das gleiche Problem. Seit zwei Tagen kämpfen, um es zu lösen.
Es funktionierte nur, wenn ich es tat:
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 -
Stellen Sie dann sicher, dass Sie sich Dockerprivilegien gewähren, indem Sie Folgendes verwenden:
$ Sudo usermod -aG docker $USER
Hoffe das hilft dir auch.
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.
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.
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.
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
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
Um den automatischen/manuellen Start des Dienstes zu aktivieren, müssen Sie die Demaskierung mit folgendem Befehl vornehmen:
Sudo sytemctl unmask docker.service
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***
Versuchen Sie "Sudo" mit dem Befehl zu verwenden, den Sie ausführen.
Da sich Docker an einen Unix-Socket bindet, der root beim Start gehört, funktioniert die Verwendung von 'Sudo' zusammen mit den Docker-Befehlen.
Ich habe denselben Fehler in der Amazon EC2-Instanz festgestellt. Das Problem wurde nach dem Neustart der Instanz behoben.
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).
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
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.
Aktuellen Benutzer zur Docker-Gruppe hinzufügen:
Sudo usermod -aG docker $(whoami)