Kør Docker på Ubuntu på Windows Subsystem til Linux

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har forsøgt at køre Docker på WSL uden succes. Jeg har installeret Docker på WSL efter de trin, der blev givet til at installere Docker på Ubuntu, men når jeg udfører docker ps får jeg følgende fejl: [16]


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


Se docker logs Jeg fandt dette:


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'
modprobe: 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'
modprobe: 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)


Enhver ide, hvordan kan jeg køre Docker på WSL?

Bedste reference


Endelig kunne jeg køre Docker på WSL på en nem måde: Du skal først installere og køre Docker Engine på Windows og derefter bare oprette et symbolsk link på Ubuntu bash, der peger på Windows-eksekverbare:


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


Dette link virker, fordi det er muligt at køre Windows-kørsler fra Bash fra version Windows 10 Creators Update . Hvis din Windows-version er tidligere til Windows 10 Creators Update, kan du prøve løsning forklaret i denne blog [17]

Andre referencer 1


Gode ​​nyheder! Den egentlige linux Docker-daemon løber rigtig godt ud på build 17134, og der er derfor ikke brug for Windows Docker eller Hyper-V længere. Jeg tester opbygningen på Release Preview-ring og jeg har kun samlet dockerkilder i en linux-container inde i WSL uden problem !


Bare vent på den næste Windows 10-funktionsløsning, som kommer til alle i de kommende uger!

Andre referencer 2


Forsøger at køre Linux-dockerdemonen med WSL, er det usandsynligt, at det fungerer, Docker for Linux har brug for en Linux-kerne, der skal køre, mens WSL er Windows-kernen, der implementerer Linux-syscalls, så du kan køre Linux-programmer.


I stedet skal du installere docker til Windows, der understøtter Linux-containere ved hjælp af en integreret Linux VM (Hyper-V eller VirtualBox afhængigt af din version). Når du har installeret Windows-versionen af ​​docker, har du den docker-klient, som du kan få adgang til fra forskellige kommandolinjer, herunder cmd og bash. [18]

Andre referencer 3


I dette øjeblik kan du bare ikke køre dockerd og den faktiske docker runtime inde i WSL. Selvom det på ingen måde betyder det, vil det ikke være muligt i fremtiden.


Du kan stadig bruge docker klienten fra WSL til at styre din Windows² docker-dæmon og dens containere.


I WSL skal du bare lave en export DOCKER\_HOST='tcp://localhost:2375'. Tillad også TCP-adgang i dine Windows² Docker-indstillinger. Nu kan du udføre docker ps og se de containere, der drives af dockerd på Windows².


Hvis du Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running? betyder det, at du ikke har aktiveret TCP-adgang i Docker-indstillingerne på Windows.


² faktisk understøtter Windows ikke Docker overhovedet. En Hyper-V 'Moby' Linux-forekomst muliggør Docker på Windows.

Andre referencer 4



  1. Installer "Docker for windows".

  2. "Docker for windows" > settings > general Aktivér expose on tcp//*** without TLS.

  3. Kør følgende kodestykke på sybsystem for at installere 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' på sybsystem.