Impossible de se connecter au démon Docker sur macOS

208

Je préfère normalement gérer mes applications sur mon OSX avec brew

Je peux installer docker, docker-compose et docker-machine

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

Je n'ai pas téléchargé et exécuté l'application «Docker pour Mac».

Mais quand j'essaye de courir

> 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'.

J'ai déjà vérifié le fichier chaussette

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

J'ai également essayé cette solution proposée: Docker sudo de Mac OS X Impossible de se connecter au démon Docker. Le démon docker s'exécute-t-il sur cet hôte?

Mais j'ai reçu ce message d'erreur:

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

Est-il possible de faire fonctionner un service docker par des outils en ligne de commande?

Anthony Kong
la source
2
Lancer l'application Docker à partir de Launchpad, affichera une boîte de dialogue demandant que pour exécuter l'application, il est nécessaire d'accorder certains privilèges pour cette application, après cela, le Docker est de retour au jeu.
Rafael Kerr
Dans mon cas, un autre utilisateur s'est connecté, c'est pourquoi il a échoué. Déconnecter un autre utilisateur et travailler ensuite
Raza Ahmed

Réponses:

474

Sur un Mac pris en charge, exécutez:

brew cask install docker

Ensuite , lancez l' Docker app. Cliquez sur Suivant. Il vous demandera un accès privilégié. Confirmer. Une icône de baleine devrait apparaître dans la barre supérieure. Cliquez dessus et attendez que "Docker fonctionne" apparaisse.

Vous devriez pouvoir exécuter des dockercommandes maintenant:

docker ps

Étant donné que docker est un package de niveau système, vous ne pouvez pas l'installer à l'aide brew installet devez utiliser le cask à la place.

Remarque: Cette solution ne fonctionne que pour les Mac dont les processeurs prennent en charge la virtualisation, qui peuvent ne pas inclure les anciens Mac.

friederbluemle
la source
10
Cela devrait être la réponse acceptée. Accédez à la zone de lancement après l'installation et la recherche de docker
Joe Lloyd
39
J'ai fait un docker d'installation de brew et l'application n'a pas été installée jusqu'à ce que j'exécute la commande docker d'installation de brew cask. Merci!
jbrahy
2
Que se passe-t-il si la commande ne fonctionne toujours pas même après l'installation du cask (et Docker whale montre qu'elle s'exécute après le mot de passe donné)?
vol7ron
2
Cette solution ne fonctionne que pour les Mac dont les processeurs prennent en charge la virtualisation. Cela ne fonctionne pas sur un Mac Pro 2009, par exemple. Pourriez-vous modifier votre réponse pour inclure ce fait important?
John Y
3
Cela m'a aidé comme je l'ai utilisé brew install dockerinitialement. brew installgérer les services CLI et brew cask installest une extension qui permet de gérer les services avec une interface utilisateur graphique.
Binoy S Kumar
109

Sur macOS, le dockerbinaire n'est qu'un client et vous ne pouvez pas l'utiliser pour exécuter le démon docker, car le démon Docker utilise des fonctionnalités de noyau spécifiques à Linux, donc vous ne pouvez pas exécuter Docker nativement sous OS X. Vous devez donc installer docker-machinepour créer VM et attachez-y.

Installer docker-machinesur macOS

Si vous n'avez pas docker-machineencore de commande, installez-la en utilisant l'une des méthodes suivantes:

  • En utilisant Brew commande: brew install docker-machine docker.
  • Manuellement à partir de la page des versions :

    $ 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
    

Voir: Premiers pas avec Docker pour Mac .

Installer Virtualbox

docker-machinerepose sur l'installation de VirtualBox et échouera si ce n'est pas le cas. Si vous avez déjà VirtualBox, vous pouvez ignorer cette étape.

  • Utiliser Homebrew: brew cask install virtualbox
  • Utilisation manuelle des versions sur Virtualbox.org

Vous devrez accepter activement le chargement de l'extension du noyau Virtualbox dans le panneau de sécurité OS X, puis continuer à redémarrer la machine pour que les commandes suivantes n'échouent pas avecError: VBoxNetAdpCtl: Error while adding new interface

Configurer docker-machinesur macOS

Créez une defaultmachine (si vous n'en avez pas, voir:docker-machine ls :

docker-machine create --driver virtualbox default

Ensuite, configurez l'environnement pour le client Docker:

eval "$(docker-machine env default)"

Ensuite, revérifiez en listant les conteneurs:

docker ps

Voir: Premiers pas avec Docker Machine et une machine virtuelle locale .


En relation:

Kenorb
la source
7
ce devrait être la réponse acceptée. Il décrit clairement a) pourquoi cela ne fonctionne pas, b) les instructions pour le faire fonctionner sans télécharger l'interface utilisateur sur OSX et c) les liens de référence pour une lecture plus approfondie.
user2490003
1
J'ai également dû installer virtualbox pour que les commandes docker-machine fonctionnent:brew cask install virtualbox
oligofren
1
Pour démarrer une docker-machineconnexion, utilisez brew services start docker-machineou, si vous ne souhaitez pas utiliser Homebrew, consultez la section "Démarrer les machines locales au démarrage" de cette page (comprend des instructions pour Mac).
Chris H.
Comment l'installation de docker avec "brew cask install docker" vous aidera ici? Cela permettra-t-il d'exécuter le thread du démon docker pour qu'il s'exécute sur mac? Comment cela résoudra-t-il l'erreur "Docker: impossible de se connecter au démon Docker sous unix: ///var/run/docker.sock"?
Gunjan Shah Il y a
40

J'ai eu ce même problème, je l'ai résolu dans les étapes suivantes:

docker-machine restart

Quittez le terminal (ou iTerm2, etc, etc.) et redémarrez

eval $(docker-machine env default)

J'ai aussi répondu ici

Master p
la source
2
L'eval one "devrait" être tout ce dont vous avez besoin :)
rogerdpack
15

J'ai Mac OS et j'ouvre Launchpadet sélectionne l' dockerapplication. à partir de l' resetonglet, cliquez sur restart.

Ehsan Barkhordar
la source
Oui, vous devez lancer l'application Docker en premier haha
Ender
12

Essayez ceci pour créer une valeur par défaut.

docker-machine create default
Mossaddeque Mahmood
la source
5
cela m'a juste donné ... docker-machine create default Création de l'autorité de certification: /Users/stens/.docker/machine/certs/ca.pem Création du certificat client: /Users/stens/.docker/machine/certs/cert.pem Exécution vérifications de pré-création ... Erreur lors de la vérification de pré-création: "VBoxManage introuvable. Assurez-vous que VirtualBox est installé et que VBoxManage est dans le chemin" .... ce qui semble faux puisque VirtualBox n'est plus nécessaire pour exécuter docker sur osx
Scott Stensland
Apparaît que vous pouvez également l'utiliser xhyve, voir stackoverflow.com/a/42419979/32453 ou installez simplement virtualbox :)
rogerdpack
Et alors ?
FrankyFred
7

sur OSX, assurez-vous d'avoir lancé l'application Docker avant d'émettre

docker ps

ou docker build... etc ... oui il semble étrange et quelque peu trompeur que l'émission

docker --version

donne la version même si le démon docker n'est pas en cours d'exécution ... idem pour ces autres cmds de version ... Je viens de rencontrer exactement les mêmes symptômes ... ce comportement sur OSX est différent de sur linux

Scott Stensland
la source
3

J'ai eu le même problème. Docker en cours d'exécution mais n'a pas pu y accéder via CLI.

Pour moi, le problème a été résolu en exécutant "Docker Quickstart Terminal.app". Il se trouve dans le dossier "/ Applications / Docker /". Tant que je travaille dans cette instance de l'application Terminal, Docker fonctionne parfaitement. Si une deuxième fenêtre est nécessaire, je dois exécuter à nouveau l'application "Quickstart".

J'ai une installation Docker pour Mac. Par conséquent, je ne sais pas si ma solution est valable pour une installation Homebrew.

L'application «Docker Quickstart Terminal» semble être essentiellement quelques scripts de pomme pour lancer l'application de terminal et un script de démarrage bash qui initialise toutes les variables d'environnement nécessaires.

J'espère que ceci aide quelqu'un d'autre !

beo
la source
3

J'avais docker à jour, docker a dit qu'il fonctionnait et le diagnostic était bon. J'avais besoin de désactiver certaines variables d'environnement héritées (merci https://docs.docker.com/docker-for-mac/troubleshoot/#workarounds-for-common-problems )

unset DOCKER_HOST
unset DOCKER_CERT_PATH
unset DOCKER_TLS_VERIFY
Michael
la source
1
cela a résolu mon problème après une mise à jour de Docker basé sur VM vers le programme d'installation Mac. Il a continué à chercher la VM.
bobomoreno
utilisez-le si vous voyez une mauvaise adresse IP dans «Impossible de se connecter ... etc»
bobomoreno
2

Docker pour Mac est obsolète. Et vous n'avez pas besoin de Homebrew pour exécuter Docker sur Mac. Au lieu de cela, vous voudrez probablement installer Docker Desktop ou, s'il est déjà installé, assurez-vous qu'il est à jour et fonctionne, puis essayez de vous reconnecter au socket.

entrez la description de l'image ici

Josh Habdas
la source
2

Vous devez exécuter le script pour installer docker et le lancer à partir de la ligne de commande:

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

après cela docker-composedevrait fonctionner

Boris Azanov
la source
travaillé pour moi, merci
Soul Coder
1

Installez minikube et venez rejoindre le côté obscur.

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'.

Fonctionne très bien sur Macbook Pro 2018 avec bash v5. Pas besoin d'installer tous les autres non-sens docker ces jours-ci OMI. La machine virtuelle et le script d'installation fournis avec minikube peuvent remplacer la machine docker d'après mon expérience.

Ligemer
la source
En guise de commentaire de suivi, j'avais également besoin de Docker pour un autre projet sans kube et le bureau Docker fonctionne très bien. Ne le lancez pas toujours, sinon kube se fâche de ce message.
Ligemer
1

J'étais confronté à un problème similaire sur mon Mac, et j'ai constaté que Docker ne fonctionnait pas sur ma machine, je suis simplement allé dans les applications et j'ai invoqué la baleine, puis cela a fonctionné.

Rama Sharma
la source
0

J'ai simplement dû lancer la recherche Spotlight et exécuter l'application Docker sous le dossier / Applications qui a brew cask installcréé. Une fois que cela a été exécuté, il a demandé de terminer l'installation. J'ai ensuite pu courirdocker ps

filaire00
la source