web-dev-qa-db-fra.com

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

Je suis capable d'installer docker, docker-compose et docker-machine

Cependant 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?

25
zsbappa

Vous avez trouvé la solution à ce message: https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

Exécuter docker contre un moteur sur une machine différente est en fait assez facile, car Docker peut exposer un TCP point final auquel le CLI peut s’attacher.

Ce TCP point final est désactivé par défaut; pour l’activer, cliquez avec le bouton droit de la souris sur l’icône Docker dans la barre des tâches, choisissez Paramètres, puis cochez la case en regard de "Expose daemon on tcp: // localhost". : 2375 sans TLS ”.

Ceci fait, tout ce que nous avons à faire est d’informer la CLI sous Bash de se connecter au moteur fonctionnant sous Windows au lieu du moteur non existant fonctionnant sous Bash, comme ceci:

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

Il existe deux manières de rendre cette tâche permanente: soit ajouter un alias pour la commande ci-dessus, soit exporter une variable d'environnement qui indique à Docker où trouver le moteur hôte (NOTE: assurez-vous d'utiliser les apostrophes uniques ci-dessous):

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

L’exécution de commandes Docker à partir de Bash fonctionne exactement comme elles sont supposées l’être.

$ docker run hello-world

Réponse réussie:

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

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

Voir Microsoft/WSL numéro 2114 et ce fil .

Pour le serveur, vous devrez toujours utiliser uniquement Docker pour Windows et sa machine virtuelle Hyper-V.

Ensuite, Microsoft/WSL numéro 2102 ajoute:

J'ai pu faire fonctionner TLS à partir de WSL en modifiant la variable d'environnement _DOCKER_CERT_PATH_ (obtenue en exécutant eval $(docker-machine.exe env --Shell bash)) de "_C:\C:\Users\mmarchini\.docker\machine\machines\default_" en "_/mnt/c/Users/mmarchini/.docker/machine/machines/default/_".
Au moins, la construction de docker semble fonctionner maintenant, je vais essayer d'utiliser _docker-compose_ plus tard.

Voir ce script (de Matheus Marchini ) pour lancer une bash Docker-machine avec le bon réglage:

_#!/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)
_
5
VonC

Le client et le serveur Docker peuvent désormais être installés et exécutés uniquement en WSL sans Docker Desktop pour Windows si vous exécutez Windows 10 version 1803 ou ultérieure. Je le travaille sur le WSL suivant:

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

Suivez simplement les mêmes instructions pour installer sur Ubuntu mais assurez-vous de choisir une version spécifique à installer. Actuellement, la version du 18.06.1 ~ ce ~ 3-0 ~ ubuntu fonctionne bien, mais les versions ultérieures jusqu’au 5: 18.09.6 ~ 3-0 ~ ubuntu-bionic a un problème avec le démarrage d'un conteneur. La commande suivante installera la dernière version de travail:

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

Pour que le serveur Docker fonctionne dans WSL après l'installation, fermez tous les terminaux ouverts et démarrez un nouveau terminal Ubuntu en tant qu'administrateur (c'est-à-dire, cliquez avec le bouton droit de la souris sur le raccourci Ubuntu, puis 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é à chaque redémarrage de Windows. Toutefois, si vous souhaitez éviter cela, vous pouvez l’automatiser à l’aide du planificateur de tâches et d’un script Shell en suivant la procédure indiquée ici .

Testez que tout fonctionne avec:

docker run hello-world

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

4
Stephan

pour moi cela a fonctionné pour WSL pour Windows:

  • 1> aller à: Activer ou désactiver les fonctionnalités Windows
  • 2> désélectionnez "Hyper-V", redémarrez,
  • 3> allez à "Activer ou désactiver les fonctionnalités Windows" à nouveau,
  • 4> sélectionnez à nouveau "Hyper-V"
  • et redémarrez une dernière fois. Ensuite, Docker était à nouveau accessible.

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