Unter macOS kann keine Verbindung zum Docker-Daemon hergestellt werden

203

Normalerweise bevorzuge ich es, meine Apps unter OSX mit Brew zu verwalten

Ich kann Docker, Docker-Compose und Docker-Maschine installieren

docker --version
Docker version 17.05.0-ce, build 89658be
docker-compose --version
docker-compose version 1.13.0, build unknown
docker-machine --version
docker-machine version 0.11.0, build 5b27455

Ich habe die App 'Docker für Mac' nicht heruntergeladen und ausgeführt.

Allerdings, wenn ich versuche zu rennen

> docker run -d -p 80:80 --name webserver nginx
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.

Ich habe die Sockendatei bereits überprüft

ls -lah /var/run/docker.sock /var/tmp/docker.sock
ls: /var/run/docker.sock: No such file or directory
ls: /var/tmp/docker.sock: No such file or directory

Ich habe auch diese vorgeschlagene Lösung ausprobiert: Mac OS X Sudo Docker Es kann keine Verbindung zum Docker-Daemon hergestellt werden. Läuft der Docker-Daemon auf diesem Host?

Aber ich habe diese Fehlermeldung erhalten:

$ eval $(docker-machine env default)
Host does not exist: "default"

Ist es möglich, einen Docker-Dienst mit Befehlszeilentools ausführen zu lassen?

Anthony Kong
quelle
2
Wenn Sie die Docker-Anwendung über Launchpad starten, wird ein Dialogfeld angezeigt, in dem Sie gefragt werden, ob zum Ausführen der App einige Berechtigungen für diese App erforderlich sind. Danach ist der Docker wieder im Spiel.
Rafael Kerr
In meinem Fall war ein anderer Benutzer angemeldet, weshalb dies fehlschlug. Abmelden anderer Benutzer und arbeitete dann
Raza Ahmed

Antworten:

464

Führen Sie auf einem unterstützten Mac Folgendes aus:

brew cask install docker

Starten Sie dann die Docker- App. Weiter klicken. Es wird nach privilegiertem Zugriff gefragt. Bestätigen. In der oberen Leiste sollte ein Walsymbol angezeigt werden. Klicken Sie darauf und warten Sie, bis "Docker läuft" angezeigt wird.

Sie sollten dockerjetzt Befehle ausführen können:

docker ps

Da Docker ein Paket auf Systemebene ist, können Sie es nicht mit installieren brew installund müssen stattdessen das Fass verwenden.

Hinweis: Diese Lösung funktioniert nur für Macs, deren CPUs Virtualisierung unterstützen, möglicherweise ohne alte Macs.

friederbluemle
quelle
10
Dies sollte die akzeptierte Antwort sein. Gehen Sie zur Startrampe nach der Installation und suchen Sie Docker
Joe Lloyd
39
Ich habe ein Docker für die Brauinstallation durchgeführt und die App wurde erst installiert, als ich den Befehl zum Installieren des Dockers für das Braufass ausgeführt habe. Vielen Dank!
Jbrahy
2
Was passiert, wenn der Befehl auch nach der Installation des Fasses nicht funktioniert (und der Docker-Wal anzeigt, dass er nach dem angegebenen Kennwort ausgeführt wird)?
Vol7ron
2
Diese Lösung funktioniert nur für Macs, deren CPUs die Virtualisierung unterstützen. Es funktioniert beispielsweise nicht auf einem 2009 Mac Pro. Könnten Sie bitte Ihre Antwort bearbeiten, um diese wichtige Tatsache aufzunehmen?
John Y
3
Dies hat mir geholfen, als ich es brew install dockeranfangs benutzte . brew installbefassen sich mit CLI-Diensten und brew cask installist eine Erweiterung, die hilft, mit Diensten mit grafischer Benutzeroberfläche umzugehen.
Binoy S Kumar
106

Unter macOS ist die dockerBinärdatei nur ein Client, und Sie können sie nicht zum Ausführen des Docker-Daemons verwenden, da der Docker-Daemon Linux-spezifische Kernelfunktionen verwendet. Daher können Sie Docker unter OS X nicht nativ ausführen. Sie müssen also installieren, docker-machineum sie zu erstellen VM und anhängen.

Unter docker-machinemacOS installieren

Wenn Sie noch keinen docker-machineBefehl haben, installieren Sie ihn mit einer der folgenden Methoden:

  • Verwenden des Brew- Befehls : brew install docker-machine docker.
  • Manuell von der Release-Seite :

    $ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine
    $ chmod +x /usr/local/bin/docker-machine
    

Siehe: Erste Schritte mit Docker für Mac .

Installieren Sie Virtualbox

docker-machinesetzt voraus, dass VirtualBox installiert ist, und schlägt fehl, wenn dies nicht der Fall ist. Wenn Sie bereits über VirtualBox verfügen, können Sie diesen Schritt überspringen.

  • Verwenden von Homebrew: brew cask install virtualbox
  • Manuelles Verwenden der Releases auf Virtualbox.org

Sie müssen das Laden der Virtualbox-Kernel-Erweiterung im OS X-Sicherheitsfenster aktiv akzeptieren und dann den Computer neu starten, damit die nächsten Befehle nicht fehlschlagenError: VBoxNetAdpCtl: Error while adding new interface

Konfigurieren Sie docker-machineunter macOS

Erstellen Sie eine defaultMaschine (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 dies anschließend, indem Sie die Container auflisten:

docker ps

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


Verbunden:

Kenorb
quelle
7
Dies sollte die akzeptierte Antwort sein. Es beschreibt klar a) warum es nicht funktioniert, b) Anweisungen, wie es funktioniert, ohne die Benutzeroberfläche unter OSX herunterzuladen, und c) Referenzlinks zum weiteren Lesen.
user2490003
1
Ich musste auch virtualbox installieren, damit die Docker-Maschinenbefehle funktionieren:brew cask install virtualbox
oligofren
1
Um eine docker-machineAnmeldung zu starten , verwenden Sie brew services start docker-machineoder, wenn Sie Homebrew nicht verwenden möchten, lesen Sie den Abschnitt "Lokale Computer beim Start starten" auf dieser Seite (enthält Anweisungen für Mac).
Chris H.
40

Ich hatte das gleiche Problem, das ich in den folgenden Schritten gelöst habe:

docker-machine restart

Beenden Sie das Terminal (oder iTerm2 usw. usw.) und starten Sie es neu

eval $(docker-machine env default)

Ich antwortete , es auch hier

Meister p
quelle
2
Die Bewertung "sollte" alles sein, was Sie brauchen :)
Rogerdpack
15

Ich habe Mac OS und ich öffne Launchpadund wähle dockerAnwendung. von resetRegisterkarte klicken Sie auf restart.

Ehsan Barkhordar
quelle
Ja, Sie müssen die Docker-Anwendung zuerst starten, haha
Ender,
12

Versuchen Sie dies, um einen Standard zu erstellen.

docker-machine create default
Mossaddeque Mahmood
quelle
5
Dies gab mir nur ... Docker-Maschine Standard erstellen CA erstellen: /Users/stens/.docker/machine/certs/ca.pem Client-Zertifikat erstellen: /Users/stens/.docker/machine/certs/cert.pem Wird ausgeführt Überprüfungen vor dem Erstellen ... Fehler bei der Überprüfung vor dem Erstellen: "VBoxManage nicht gefunden. Stellen Sie sicher, dass VirtualBox installiert ist und sich VBoxManage im Pfad befindet" .... was falsch zu sein scheint, da VirtualBox nicht mehr erforderlich ist, um Docker unter osx auszuführen
Scott Stensland
Anscheinend können Sie es auch verwenden xhyve, siehe stackoverflow.com/a/42419979/32453 oder einfach virtualbox installieren :)
rogerdpack
Ja und ?
FrankyFred
7

Stellen Sie unter OSX sicher, dass Sie die Docker-Anwendung vor der Ausgabe gestartet haben

docker ps

oder docker build... etc ... ja, es scheint seltsam und etwas irreführend, dass die Ausgabe

docker --version

gibt die Version an, obwohl der Docker-Daemon nicht ausgeführt wird ... ebenso für diese anderen Versions-Cmds ... Ich habe gerade genau die gleichen Symptome festgestellt ... Dieses Verhalten unter OSX unterscheidet sich von dem unter Linux

Scott Stensland
quelle
3

Ich hatte das gleiche Problem. Docker wird ausgeführt, konnte jedoch nicht über die CLI darauf zugreifen.

Für mich wurde das Problem durch Ausführen von "Docker Quickstart Terminal.app" gelöst. Dies befindet sich im Ordner "/ Applications / Docker /". Solange ich in dieser Instanz der Terminal-App arbeite, funktioniert Docker einwandfrei. Wenn ein zweites Fenster benötigt wird, muss ich die "Schnellstart" -App noch einmal ausführen.

Ich habe eine Docker für Mac-Installation. Daher bin ich mir nicht sicher, ob meine Lösung für eine Homebrew-Installation gültig ist.

Die "Docker Quickstart Terminal" -App scheint im Wesentlichen aus einigen Appleskripten zum Starten der Terminal-App und einem Bash-Startskript zu bestehen, das alle erforderlichen Umgebungsvariablen initialisiert.

Hoffe das hilft jemand anderem!

beo
quelle
3

Ich hatte Docker auf dem neuesten Stand, Docker sagte, dass es lief, und die Diagnose war gut. Ich musste einige ältere Umgebungsvariablen deaktivieren (danke https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems ).

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
Michael
quelle
1
Dies hat mein Problem nach einem Update vom VM-basierten Docker auf den Mac Installer behoben. Es suchte weiter nach der VM.
Bobomoreno
Verwenden Sie diese
Option,
2

Docker für Mac ist veraltet. Und Sie brauchen Homebrew nicht, um Docker auf einem Mac auszuführen. Stattdessen möchten Sie wahrscheinlich Docker Desktop installieren oder, falls bereits installiert, sicherstellen, dass es auf dem neuesten Stand ist und ausgeführt wird, und dann erneut versuchen, eine Verbindung zum Socket herzustellen.

Geben Sie hier die Bildbeschreibung ein

Josh Habdas
quelle
2

Sie sollten das Skript für das Installations-Docker ausführen und es über die Befehlszeile starten:

brew cask install docker
pip3 install docker-compose
open -a Docker
docker-compose ... 

danach docker-composesollte es funktionieren

Boris Azanov
quelle
hat für mich gearbeitet, danke
Soul Coder
1

Installiere Minikube und schließe dich der dunklen Seite an.

https://kubernetes.io/docs/tasks/tools/install-minikube/

$ bash --version
GNU bash, version 5.0.3(1)-release (x86_64-apple-darwin18.2.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

eval $(minikube docker-env)

$ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate     -i /local/swagger.json     -l python     -o /local/test/
[main] INFO io.swagger.parser.Swagger20Parser - reading from /local/swagger.json
[main] WARN io.swagger.codegen.DefaultGenerator - 'host' not defined in the spec. Default to 'localhost'.

Funktioniert hervorragend auf Macbook Pro 2018 mit bash v5. Keine Notwendigkeit, all den anderen Docker-Unsinn in diesen Tagen IMO zu installieren. Das mit minikube gelieferte VM- und Installationsskript kann aus meiner Erfahrung die Docker-Maschine ersetzen.

Ligemer
quelle
Als Folgekommentar brauchte ich Docker auch für ein anderes Projekt ohne Kube und der Docker-Desktop funktioniert hervorragend. Starte es einfach nicht immer, sonst wird kube wütend auf diesen Beitrag.
Ligemer
1

Ich hatte ein ähnliches Problem auf meinem Mac und stellte fest, dass Docker nicht auf meinem Computer ausgeführt wurde. Ich ging einfach zu Anwendungen und rief Wale auf, und dann funktionierte es.

Rama Sharma
quelle
0

Ich habe zuerst Docker und Docker-Compose über Homebrew ausprobiert, aber das hier aufgeführte Problem war aufgetreten. Ich musste die offizielle Installation von Docker von https://docs.docker.com/docker-for-mac/install/ installieren und dann funktionierte alles wie erwartet.

Thomas Kessler
quelle
0

Ich musste einfach die Spotlight-Suche ausführen und die Docker-Anwendung unter dem Ordner / Applications ausführen, der brew cask installerstellt wurde. Sobald dies ausgeführt wurde, wurde aufgefordert, die Installation abzuschließen. Ich konnte dann rennendocker ps

wired00
quelle