Ich möchte zu Docker wechseln, also habe ich gerade angefangen, damit herumzuspielen. Ich habe Docker auf einer VirtualBox Ubuntu 15.10 (Wily Werewolf) -Installation installiert und dann, wie hier vorgeschlagen, 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 ausgeführt wird:
$ 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 ausgeführt wird. Um sicherzugehen, 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 Image 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, den Befehl zu befolgen, aber ohne Erfolg. Was mache ich hier falsch?
Antworten:
Sie müssen Ihren aktuellen Benutzer wie folgt zur Docker-Gruppe hinzufügen:
Melden Sie sich dann ab und wieder beim System an oder starten Sie das System neu. Test von
docker version
Weitere Informationen zur Installation der Docker-Engine finden Sie in der Docker-Dokumentation
quelle
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Fügen Sie den Benutzer der Docker-Gruppe hinzu
Fügen Sie die Docker-Gruppe hinzu, falls sie noch nicht vorhanden ist:
sudo groupadd docker
Fügen Sie den verbundenen Benutzer "$ {USER}" zur Docker-Gruppe hinzu:
sudo gpasswd -a ${USER} docker
Starten Sie den Docker-Daemon neu:
sudo service docker restart
Führen Sie entweder a aus
newgrp docker
oder melden Sie sich an, um die Änderungen an Gruppen zu aktivieren.quelle
newgrp docker
lokal für die Shell ist, nicht für die Anmeldesitzung. Dies geht aus der Manpage überhaupt nicht hervor.Normalerweise führt der folgende Befehl den Trick aus:
Dies anstelle
docker start
der Fälle, in denen Docker anscheinend bereits ausgeführt wird.Wenn dies dann funktioniert, wie vorgeschlagen und in einer anderen Antwort und zu diesem GitHub-Problem , wenn Sie sich nicht zur Docker-Gruppe hinzugefügt haben, führen Sie Folgendes aus:
Und du bist höchstwahrscheinlich gut zu gehen.
Wie bei allen anderen, die darauf stoßen, startet das Docker eines Betriebssystems nicht direkt nach der Installation, und infolgedessen wird dasselbe
can't connect to daemon message
angezeigt. 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:Wenn die Ausgabe ungefähr so aussieht:
docker stop/waiting
Stattdessendocker start/running, process 15378
bedeutet dies offensichtlich, dass Docker nicht aktiv ist. Stellen Sie in diesem Fall sicher, dass Sie Folgendes beginnen:Und nach wie vor sind Sie höchstwahrscheinlich gut zu gehen.
quelle
Hinweis für sich selbst: Ich erhalte den Fehler aus dem Titel der Frage, wenn ich vergesse, den
docker
Befehl auszuführen mitsudo
:sudo docker run ...
[Ubuntu 15.10]
quelle
Hatte das gleiche Problem und was für mich funktionierte war:
Überprüfen des Besitzes von /var/run/docker.sock
Wenn Sie nicht der Eigentümer sind, ändern Sie den Eigentümer mit dem Befehl
Dann können Sie versuchen, die Docker-Befehle problemlos auszuführen: D.
quelle
root
aber zurdocker
Gruppe. Der richtige Ansatz besteht darin, Ihren aktuellen Benutzerdocker
gemäß der Docker-Dokumentation der Gruppe zuzuweisen :sudo groupadd docker && sudo usermod -aG docker $USER
Nachdem Sie alles installiert und den Dienst gestartet haben, schließen Sie das Terminal und öffnen Sie es erneut. Ziehen Sie dann das Image
Bearbeiten
Ich hatte auch dieses Problem erneut. Wenn die obige Lösung nicht funktioniert, versuchen Sie diese Lösung , die der folgende Befehl ist
Überlegungen
Wenn der obige Befehl funktioniert, haben Sie wahrscheinlich Probleme mit dem Netzwerk-Docker. Dadurch wird das Problem jedoch behoben. Um dies zu bestätigen, lesen Sie das Protokoll mit dem folgenden Befehl
Wenn die Ausgabe so etwas hat
Sie haben wirklich Netzwerkprobleme, aber ich weiß noch nicht, ob Ihr Betriebssystem beim nächsten Neustart ( Update , 2 Monate kein Problem erneut) dieses Problem erneut bekommt und ob es sich um einen Fehler oder ein Installationsproblem handelt
Meine Docker-Version
quelle
Nach der Installation von Docker unter Ubuntu habe ich den folgenden Befehl ausgeführt:
Hast du es versucht?
quelle
Ich hatte das gleiche Problem. Ich habe zwei Tage lang darum gekämpft, es zu lösen.
Es hat nur funktioniert, als ich:
Laut Docker-Tutorial müssen Sie den Docker-Schlüssel hinzufügen, falls er nicht bereits hinzugefügt wurde, indem Sie:
$ sudo wget -qO- https://get.docker.com/gpg | sudo apt-key add -
Stellen Sie dann sicher, dass Sie sich Docker-Berechtigungen gewähren, indem Sie:
$ sudo usermod -aG docker $USER
Hoffe das hilft dir auch.
quelle
sudo usermod -aG docker $USER
Geben Sie als root (
sudo su
) ein und versuchen Sie Folgendes:Ich habe hier das gleiche Problem, und der Docker-Befehl funktionierte nur als Root und auch damit
DOCKER_HOST
leerenPS: Achten Sie auch darauf, dass die korrekte und offizielle Art der Installation unter Ubuntu darin besteht, die entsprechenden Repositorys (auch am 15.10.) Zu verwenden, nicht mit diesem " wget " -Ding.
quelle
Für OSX :
Nachdem Sie Docker geöffnet und den 'Standard'-Computer über das Schnellstart-Terminal ( https://docs.docker.com/engine/installation/mac/ ) gestartet haben, versuchen Sie Docker-Befehle und erhalten die Meldung "Verbindung zum Docker-Daemon kann nicht hergestellt werden" , es stellt sich heraus , Sie einige env Variablen festlegen müssen :
eval "$(docker-machine env default)"
Dann probieren Sie es aus, um
docker run hello-world
zu sehen, ob alles pfirsichfarben ist.quelle
Für diejenigen, die bereits versucht haben, Ihren Computer neu zu starten, deaktivieren Sie die Umgebungsvariable DOCKER_HOST, wie in der Docker-Env-Dokumentation angegeben, und alle anderen versuchen einfach, mit dem zu arbeiten
Nur das hat mir auch nach dem Neustart der Maschine geholfen.
quelle
Zugriff ohne Rootberechtigung - vom Docker aus
Fügen Sie die Docker-Gruppe hinzu, falls sie noch nicht vorhanden ist.
Fügen Sie den verbundenen Benutzer "$ {USER}" zur Docker-Gruppe hinzu.
Ändern Sie den Benutzernamen entsprechend Ihrem bevorzugten Benutzer.
Möglicherweise müssen Sie sich abmelden und erneut anmelden, damit dies wirksam wird.
Starten Sie den Docker-Daemon neu.
quelle
Diese Frage ist derzeit die Nummer 3 in einer Google-Suche. Nachdem ich einige Nachforschungen angestellt hatte, um dieses Problem auf meinem Linux-System zu lösen, dachte ich, ich würde diese Antwort schreiben. Der ursprüngliche Beitrag besagt, dass das Problem unter Ubuntu liegt, aber ich habe das Problem auch mit Fedora festgestellt. In diesem Sinne habe ich Folgendes getan, um das Problem zu beheben.
Auf Fedora 22
Docker installieren:
Nach der Installation von Docker:
Ein Benutzer muss zur Docker-Gruppe hinzugefügt werden.
Der Docker-Daemon muss gestartet werden
Sie können den Daemon so einstellen, dass er beim Booten startet
Sie können überprüfen, ob der Docker-Dienst ausgeführt wird
Und noch eine letzte Überprüfung
quelle
dockerroot
. Außerdem möchten Sie es wahrscheinlich aus dem Repository installieren (anstattcurl ... | sh
), damit es später aktualisiert werden kann:dnf install docker
groupadd docker
hinzufügen und dann zu Ihrem Benutzernamen hinzufügensudo usermod -aG docker your_username
Versuchen Sie, "sudo" mit dem Befehl zu verwenden, den Sie ausführen.
quelle
Ich habe das gleiche Problem beim Ausführen von Docker.
Sie können Befehle als Sudo- Benutzer ausführen :
quelle
Für Ubuntu:
Ist mir passiert, als ich Docker aktualisiert habe.
Sie müssen den Dienst und den Socket demaskieren und dann den Dienst neu starten.
Folgendes hat bei mir funktioniert:
Was hinter den Kulissen passiert ist
systemd hat auch die Möglichkeit, eine Einheit automatisch oder manuell als vollständig nicht startbar zu markieren, indem sie mit / dev / null verknüpft wird. Dies wird als Maskieren der Einheit bezeichnet und ist mit dem Befehl mask möglich.
Sie können die Liste der maskierten Dienste überprüfen, indem Sie:
Um den automatischen / manuellen Start des Dienstes zu aktivieren, müssen Sie ihn entlarven, indem Sie:
Jetzt wird der Dienst wie unten gezeigt aktiviert
quelle
Da Docker beim Start an einen Unix-Socket bindet, der root gehört, funktioniert die Verwendung von 'sudo' zusammen mit den Docker-Befehlen.
quelle
quelle
Vielleicht hilft dies jemandem, da die Fehlermeldung äußerst wenig hilfreich ist und ich alle Standard-Berechtigungsschritte mehrere Male ohne Erfolg durchlaufen habe.
Docker belässt gelegentlich Geisterumgebungsvariablen, die den Zugriff blockieren, obwohl Ihr System ansonsten korrekt eingerichtet ist. Die folgenden Shell-Befehle machen es möglicherweise wieder zugänglich, wenn Sie es zu einem bestimmten Zeitpunkt ausgeführt haben und es nach einem Neustart nicht mehr zusammenarbeitet:
Ich hatte eine zuvor funktionierende Docker-Installation und nach dem Neustart meines Laptops weigerte er sich einfach zu funktionieren. Korrekt zu der Gruppe Docker Benutzer hinzugefügt wurde, auf dem Sockel die richtigen Berechtigungen hatte, etc, konnte aber noch nicht ausgeführt
docker login
,docker run ...
etc. Diese regelte es für mich. Leider muss ich dies bei jedem Neustart ausführen. Dies wird bei einigen Github-Problemen auch als Problemumgehung erwähnt , obwohl es wie ein Fehler erscheint, dass dies ein dauerhaftes Hindernis für den korrekten Betrieb von Docker darstellt (Hinweis: Ich bin unter Arch Linux, nicht unter OSX, aber dies war das gleiche Problem für mich).quelle
Getestet in Ubuntu 16.04
quelle
Ich habe den gleichen Fehler auf der Amazon EC2-Instanz festgestellt. Das Problem wurde nach dem Neustart der Instanz behoben.
quelle
Aktuellen Benutzer zur Docker-Gruppe hinzufügen:
sudo usermod -aG docker $(whoami)
quelle
--
) Versionen von Optionen.Für Ubuntu 16.04
/lib/systemd/system/docker.service
Änderung der Datei :mit:
/etc/init.d/docker
Änderung der Datei :mit:
und starten Sie dann Ihren Computer neu.
quelle