49 votes

Impossible de se connecter au démon Docker sur bash sur les fenêtres Ubuntu

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

Mais quand j'essaye de courir

 root@DESKTOP-51NFMIM:~# docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
 

Y a-t-il une suggestion pour résoudre ce problème?

61voto

Ramie Points 1319

Trouvé la solution sur ce post: https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

L'exécution de docker à l'encontre d'un moteur sur une machine différente, est en fait assez facile, comme Docker peut exposer un point de terminaison TCP qui la CLI peut attacher.

De ce point de terminaison TCP est désactivée par défaut; pour l'activer, cliquez-droit sur le menu fixe icône dans votre barre des tâches et choisissez Paramètres, puis cochez la case à côté de "Exposer démon sur tcp://localhost:2375 sans TLS".

Avec ce fait, tout ce que nous devons faire est de charger le CLI sous Bash pour se connecter au moteur fonctionnant sous Windows, au lieu de la non-existant moteur fonctionnant sous Bash, comme ceci:

$ docker -H tcp://0.0.0.0:2375 images

Il y a deux façons de faire ce permanents, soit l'ajout d'un alias pour la commande ci-dessus ou à l'exportation d'une variable d'environnement qui indique le Panneau où trouver l'hôte moteur (REMARQUE: assurez-vous d'utiliser l'apostrophe ci-dessous):

$ echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
$ source ~/.bashrc

Maintenant, la course panneau de commandes à partir de Bash fonctionne exactement comme ils sont supposés.

$ docker run hello-world

Réponse en cas de succès:

Hello from Docker!This message shows that your installation appears to be working correctly.

28voto

Stephan Points 81

Le Support client et le serveur peuvent maintenant être installé et exécuté uniquement dans WSL sans Support de Bureau pour Windows si vous utilisez Windows 10 version 1803 ou plus. J'ai travailler sur la suite de WSL:

OS: Ubuntu 18.04 bionic [Ubuntu on Windows 10]
Kernel: x86_64 Linux 4.4.0-17763-Microsoft

Il suffit de suivre les mêmes instructions pour l'installer sur Ubuntu, mais assurez-vous de choisir une version spécifique à installer. Actuellement, la version 18.06.1~ec~3-0~ubuntu fonctionne très bien mais les versions ultérieures jusqu'à 5:18.09.6~3-0~ubuntu-bionic avez un problème avec le démarrage d'un conteneur. La commande suivante va installer la dernière version de travail:

apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

Pour obtenir le Docker serveur qui s'exécute dans WSL après l'installation, fermez toutes les bornes et de commencer un nouveau terminal Ubuntu en tant qu'administrateur (c'est à dire, à droite, cliquez sur le Ubuntu raccourci et cliquez sur "Exécuter en tant qu'administrateur"). Enfin, exécutez les commandes suivantes:

sudo cgroupfs-mount
sudo service docker start

sudo service docker start devra être exécutée à chaque fois que Windows a redémarré. Toutefois, si vous ne le souhaitez pas, vous pouvez l'automatiser en utilisant le Planificateur de Tâches et un script shell en suivant les étapes indiquées ici.

Tester que tout fonctionne à l'aide de:

docker run hello-world

Référence: https://medium.com/faun/docker-running-seamlessly-in-windows-subsystem-linux-6ef8412377aa

12voto

Tazbir Bhuiyan Points 60

pour moi, cela a fonctionné pour WSL pour Windows:

  • 1> allez à: Activer ou désactiver les fonctionnalités Windows
  • 2> désélectionnez "Hyper-V", redémarrez,
  • 3> allez à nouveau sur "Activer ou désactiver les fonctionnalités Windows",
  • 4> sélectionnez à nouveau "Hyper-V"
  • et redémarrez une dernière fois. Ensuite, docker a été de nouveau joignable.

en supposant que vous avez installé le bureau docker pour Windows et Paramètres-> Général-> Démontrer le démon sur tcp: // localhost: 2375 sans TLS est coché

7voto

VonC Points 414372

Remarque: si vous utilisez Ubuntu à partir de WSL (sous-système Windows pour Linux), faire comprendre que le support client fonctionne, pas le docker serveur (démon).

Voir Microsoft/WSL question 2114 et ce fil.

Pour le serveur, vous auriez encore besoin que de Docker pour Windows et son Hyper-V VM.

Ensuite, Microsoft/WSL question 2102 ajoute:

J'ai été en mesure de faire TLS de l'intérieur WSL en changeant DOCKER_CERT_PATH variable d'environnement (que j'ai obtenu à partir de l'exécution eval $(docker-machine.exe env --shell bash)) à partir de "C:\C:\Users\mmarchini\.docker\machine\machines\default" à "/mnt/c/Users/mmarchini/.docker/machine/machines/default/" .
Au moins docker construire semble fonctionner maintenant, je vais essayer d'utiliser docker-compose plus tard.

Voir ce script (à partir de Matheus Marchini) pour lancer un menu fixe-machine bash avec:

#!/usr/bin/env python3

from subprocess import run, PIPE

completed_process = run(["docker-machine.exe", "env", "--shell", "bash"], stdout=PIPE)

docker_env = completed_process.stdout.decode("ascii")

for line in docker_env.split("\n"):
    if "DOCKER_CERT_PATH" in line:
        env_var, path, _ = line.split('"')
        path = path.replace("\\", "/")
        drive, path = path.split(":", 1)
        path = "/mnt/{}{}".format(drive.lower(), path)
        line = '{}"{}"'.format(env_var, path)
print(line)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X