web-dev-qa-db-fra.com

Exécuter Docker sur Ubuntu sur un sous-système Windows pour Linux

J'ai essayé d'exécuter Docker sur WSL sans succès. J'ai installé Docker sur WSL en suivant les étapes indiquées pour installer Docker sur Ubuntu mais lorsque j'exécute docker ps, l'erreur suivante apparaît:

docker ps    
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

En regardant les journaux de docker, j'ai trouvé ceci:

level=warning msg="Running modprobe nf_nat failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-43-Microsoft/modules.dep.bin'\nmodprobe: WARNING: Module nf_nat not found in directory /lib/modules/4.4.0-43-Microsoft`, error: exit status 1"
time="2017-12-28T12:07:23.227671600+01:00" level=warning msg="Running modprobe xt_conntrack failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.4.0-43-Microsoft/modules.dep.bin'\nmodprobe: WARNING: Module xt_conntrack not found in directory /lib/modules/4.4.0-43-Microsoft`, error: exit status 1"
Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain: iptables failed: iptables -t nat -N DOCKER: iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
 (exit status 3)

Une idée de comment puis-je exécuter Docker sur WSL?

5

Enfin, je pourrais facilement exécuter Docker sur WSL: vous devez d’abord installer et exécuter Docker Engine sous Windows, puis créer un lien symbolique sur Ubuntu bash pointant sur l’exécutable Windows:

Sudo ln -s /mnt/c/Program\ Files/Docker/Docker/resources/bin/docker.exe /usr/bin/docker

Ce lien fonctionne car à partir de la version Windows 10 Creators Update, il est possible d'exécuter des exécutables Windows à partir de Bash. Si votre version de Windows est antérieure à la mise à jour de Windows 10 Creators, vous pouvez essayer la solution expliquée dans ce blog

8

Bonnes nouvelles! Le vrai démon Linux Docker fonctionne très bien sur la version 17134, de sorte que Windows Docker ou Hyper-V ne sera plus nécessaire. Je teste la compilation sur la bague Release Preview et je viens de compiler des sources de menu fixe dans un conteneur Linux dans WSL sans problème!

Attendez la prochaine version de Windows 10 qui sera disponible pour tout le monde dans les prochaines semaines!

7
onoma

Tenter d'exécuter le démon dockerd Linux avec WSL a peu de chances de fonctionner, Docker pour Linux a besoin d'un noyau Linux pour fonctionner, tandis que WSL est le noyau Windows qui implémente les appels système Linux pour vous permettre d'exécuter des programmes Linux.

Au lieu de cela, vous devez installer docker pour windows qui prend en charge les conteneurs Linux à l’aide d’un Linux VM intégré (Hyper-V ou VirtualBox selon votre version). Une fois que vous avez installé la version Windows de docker, vous avez le client docker auquel vous pouvez accéder à partir de différentes lignes de commande, y compris cmd et bash.

2
BMitch

À ce moment précis, vous ne pouvez pas exécuter dockerd et le runtime actuel du menu fixe dans WSL. Bien que cela ne signifie nullement que cela ne sera pas possible à l'avenir.

Vous pouvez toujours utiliser le client docker de WSL pour contrôler votre démon docker Windows² et ses conteneurs.

Dans WSL, il suffit de faire un export DOCKER_Host='tcp://localhost:2375'. En outre, autorisez l’accès à TCP dans vos paramètres Windows² Docker. Maintenant, vous pouvez exécuter docker ps et voir les conteneurs alimentés par dockerd sous Windows².

Si vous Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?, cela signifie que vous n'avez pas activé l'accès TCP dans les paramètres de votre menu fixe sous Windows.

² En fait, Windows ne supporte pas du tout Docker. Une instance Linux Hyper-V "Moby" active Docker sous Windows.

1
Alex
  1. Installez "Docker for windows".
  2. "Docker for windows" > settings > general Activer expose on tcp//*** without TLS.
  3. Exécutez l'extrait suivant sur sybsystem pour installer docker cli
DOCKERVERSION=18.03.1-ce
curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKERVERSION}.tgz \
&& tar xzvf docker-${DOCKERVERSION}.tgz --strip 1 -C /usr/local/bin docker/docker \
&& rm docker-${DOCKERVERSION}.tgz
  1. export DOCKER_Host='tcp://localhost:2375'on sybsystem.
0
JMadushan