it-swarm.com.de

Führen Sie Docker unter Ubuntu unter Windows Subsystem für Linux aus

Ich habe versucht, Docker unter WSL erfolglos auszuführen. Ich habe Docker auf WSL installiert, indem Sie die Schritte befolgen, die für Docker unter Ubuntu angegeben wurden. Wenn Sie jedoch docker ps ausführen, erhalte ich die folgende Fehlermeldung:

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

Ich beobachtete Docker-Protokolle, die ich gefunden habe:

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)

Irgendeine Idee, wie ich Docker unter WSL ausführen kann?

Schließlich könnte ich Docker unter WSL auf einfache Weise ausführen: Sie müssen Docker Engine zunächst unter Windows installieren und ausführen und dann einen symbolischen Link in Ubuntu Bash erstellen, der auf die Windows-Programmdatei verweist:

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

Dieser Link funktioniert, da ab Version Windows 10 Creators Update Windows-Programme von Bash aus ausgeführt werden können. Wenn Ihre Windows-Version älter ist als Windows 10 Creators Update, können Sie die in diesem Blog erläuterte Lösung versuchen. _

Gute Nachrichten! Der echte Linux Docker-Daemon läuft hervorragend auf Build 17134, so dass Windows Docker oder Hyper-V nicht mehr benötigt werden. Ich teste den Build auf dem Release Preview-Ring und habe einfach Docker-Quellen in einem Linux-Container in WSL ohne Probleme kompiliert!

Warten Sie einfach auf die nächste Version von Windows 10, die in den nächsten Wochen für alle verfügbar sein wird!

7
onoma

Wenn Sie versuchen, den Linux-Dockerd-Dämon mit WSL auszuführen, ist es unwahrscheinlich, dass Docker für Linux einen Linux-Kernel ausführt, während WSL der Windows-Kernel ist, der Linux-Systemcalls implementiert, um Linux-Programme auszuführen.

Stattdessen sollten Sie docker für Windows installieren, das Linux-Container mit eingebettetem Linux VM (Hyper-V oder VirtualBox, je nach Version) unterstützt. Nachdem Sie die Windows-Version von Docker installiert haben, haben Sie den Docker-Client, auf den Sie über verschiedene Befehlszeilen, einschließlich cmd und bash, zugreifen können.

2
BMitch

Derzeit können Sie dockerd und die tatsächliche Docker-Laufzeit in WSL nicht ausführen. Dies bedeutet keinesfalls, dass dies in Zukunft nicht möglich ist.

Dennoch können Sie den docker-Client von WSL verwenden, um Ihren Windows²-Docker-Daemon und seine Container zu steuern.

In WSL mache einfach einen export DOCKER_Host='tcp://localhost:2375'. Erlauben Sie zusätzlich TCP den Zugriff in Ihren Windows² Docker-Einstellungen. Jetzt können Sie docker ps ausführen und die Container sehen, die unter dockerd unter Windows² betrieben werden.

Wenn Sie Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running? verwenden, bedeutet dies, dass Sie in den Docker-Einstellungen unter Windows nicht den Zugriff auf TCP aktiviert haben.

² Windows unterstützt eigentlich gar kein Docker. Eine Hyper-V "Moby" Linux-Instanz aktiviert Docker unter Windows.

1
Alex
  1. Installieren Sie "Docker for windows".
  2. "Docker for windows" > settings > general Aktivieren Sie expose on tcp//*** without TLS.
  3. Führen Sie das folgende Snippet auf Sybsystem aus, um Docker-CLI zu installieren
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