Ved at introducere Windows Subsystem for Linux (WSL) gav Microsoft udviklere mulighed for at køre et GNU/Linux-miljø direkte på Windows, uændret, uden at skulle bruge en virtuel maskine. Det er en god løsning, fordi mange udviklere bruger ét system til programmering og et andet til underholdning.
WSL er stadig under udvikling, men det er i øjeblikket velegnet til moderne softwareudviklingbåde i den første og den anden version. Når man gennemgår de problemer og spørgsmål, der er rapporteret på internettet, synes de fleste at vedrøre integrationen af WSL med Docker, især når det drejer sig om opgradering fra WSL 1 til WSL 2.
Denne artikel vil fjerne alle uklarheder og hjælpe dig med at komme smertefrit igennem denne proces. Hvis du ikke har WSL 1 og gerne vil have WSL 2 med Docker, kan du springe direkte til det sidste kapitel.
Hvad får du ud af det?
- Den nyeste stabile Linux-kerne (tunet af Microsoft). WSL 1 har en Linux-kompatibel kernegrænseflade uden Linux-kernen Kode.
- Øget fil-IO-ydelse. Op til 20 gange hurtigere sammenlignet med WSL 1 ved udpakning af en zippet tarball, omkring 2-5 gange hurtigere ved brug af git-klon
, npm-installation
og cmake
på forskellige projekter.
- Fuld kompatibilitet med systemkald. Linux-binære filer bruger systemkald til at udføre mange funktioner, som f.eks. at få adgang til filer, anmode om hukommelse, oprette processer og meget mere. Mens WSL 1 brugte et oversættelseslag bygget af WSL holdWSL 2 indeholder sin egen Linux-kerne med fuld systemkaldskompatibilitet.
- Filer gemt i en oprindelig ext4-partition på en virtuel disk.
- Meget nem måde at integrere med Docker på.
Jeg tror, at for de fleste brugere lyder fil-IO-ydelsen og den nemme docker-integration som tilstrækkelige grunde.
Lad os komme af sted!
Jeg går ud fra, at du har den seneste stabile version af Windows 10 Pro. I dag er det 1909-udgaven.
Slut dig til Windows-insidere
I øjeblikket er WSL 2 kun tilgængelig for Windows 10 i insiders' slow ring. Så vidt jeg ved, skulle den stabile version være tilgængelig i maj 2020 (20H1-udgivelse). Den langsomme ring er en ganske sikker løsning for brugere, der gerne vil have nye funktioner lidt tidligere, som allerede er testet af brugere af den hurtige ring. Den langsomme ring får systemopdateringer op til en eller to gange om måneden. Du kan læse om ændringer i insiders release i det Microsoft-dokument, der hedder Fly-hub.
For at deltage skal du blot følge den officielle Microsoft guide. Det er meget nemt og tager ca. 15 minutter uden at miste nogen personlige data.
Opgrader WSL 1 til WSL 2
Følg den officielle guide. Det er også meget nemt, et par shell-kommandoer, og så er du i gang! Afhængigt af hvor omfattende din Linux under WSL 1 var, kan det tage lidt tid. Desværre har Microsoft ikke placeret en statuslinje eller oplysninger om den nødvendige tid, så bare hav tålmodighed.
Oprydning
Dette er den vigtigste del af et godt samarbejde mellem WSL 2 og Docker. Efter at have opgraderet til WSL 2 forsøger mange brugere at tvinge deres version af Docker til at samarbejde uden at indse, at Docker-teamet, især for WSL 2, har forberedt en udgivelse, der vil gøre alt for os. Dette er den sidste udgivelse af Docker Edge-versionen (deres beta-navn) - "Docker Desktop WSL 2 backend". Denne version, 2.1.7.0, er velpoleret og er en kandidat til den kommende stabile udgivelse.
Brugere, der ikke havde WSL 1 eller lige har installeret en ny version af WSL 2, er heldige og kan straks springe til det sidste kapitel.
Hvis du ikke har renset din Docker (overhovedet eller korrekt) og ikke har installeret den rigtige version af Docker til WSL 2, kan du støde på nogle almindelige fejl, f.eks, Kan ikke oprette forbindelse til Docker-dæmonen på tcp://localhost:2375", "Kører Docker-dæmonen?
osv. I de fleste tilfælde vil du miste tid, hvis du ikke ved, at du skal gå nye veje for at løse disse fejl. For at gøre dette skal du først fjerne Docker helt fra WSL og Windows, hvilket ikke er et indlysende skridt.
Det mest almindelige eksempel på ikke-fjernede rester er den gamle Docker-tilgang til at indstille miljøvariablen DOCKER_HOST=tcp://localhost:2375
under WSL 1 for at samarbejde med Windows Docker-indstillingen Udsæt daemon på tcp://localhost:2375 uden TLS
.
Hvordan fjerner man Docker helt fra WSL (Ubuntu)?
- Som den officielle Docker Dokumenter siger:
sudo apt-get remove docker docker-engine docker.io containerd runc
Du kan helt sikkert tilføje til denne liste docker-ce
og docker-ce-cli
.
- Identificer alle docker-pakker, du har, med
dpkg -l | grep -i docker
og fjerne dem, hvis de stadig findes.
- Fjern alle rester:
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Dette trin er for avancerede brugere, så vær forsigtig. Du behøver sandsynligvis ikke at gøre det.
Find alle docker
ordforekomster, og fjern dem, du er sikker på.
sudo find / -name "*docker*"
- Tjek indholdet af alle nedenstående filer for
docker
forekomster som f.eks. miljøvariabel DOCKER_HOST=tcp://localhost:2375
.
Du kan redigere disse filer med Nano-editoren, nano ~/.bashrc
eller Visual Studio Code, kode ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profile
/etc/bash.bashrc
/etc/profile
Hvordan fjerner man Docker helt fra Windows?
- Afinstaller på normal vis med Windows
Apps og funktioner
panel.
- Fjern alt nedenfor, hvis det findes:
C:Program FilesDocker
C:ProgramDataDockerDesktop
C:Users[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Hvad bliver det næste?
Installer den nyeste version af Docker Desktop Edge fra her og følg trinene fra den officielle Dokumenter. Det handler i virkeligheden om nogle få klik.
Hvis alt går godt, bør du have dit output fra wsl -l -v
sådan her:
NAVN TILSTAND VERSION
Ubuntu-18.04 Kører 2
docker-desktop Kører 2
docker-desktop-data Kører 2
Det var det hele. Docker har skabt sine egne WSL-containere docker-desktop
og docker-desktop-data
. Nogle af de tilgængelige vejledninger eller råd kan være forvirrende, fordi denne gang du bør ikke installere eller konfigurere noget, der er relateret til Docker, under din WSL Linux-distribution. Det er meget vigtigt at huske. Efter rengøringen skal den fungere godt med det samme.
Derudover...
Opsætning af WSL 2 med Docker kan være en smertefri proces med et par enkle trin. Begynd med at opdatere Pakkelister ved hjælp af kommandoen "sudo apt-get update" for at sikre, at du har de nyeste versionsoplysninger. Løs eventuelle manglende afhængigheder med "sudo apt-get install -y build-essential" for at få en problemfri installationsoplevelse. Installer Docker-motor med "sudo apt-get install -y docker-engine" for nemt at bygge, køre og administrere containere. Udfør "sudo docker run" efterfulgt af image-navnet for at starte containere. For at holde dit miljø optimeret skal du med jævne mellemrum køre "sudo docker system prune" for at fjerne ubrugte containere og frigøre diskplads. Med disse trin kan du nyde godt af den problemfri integration af WSL 2 og Docker til effektiv containerisering i dit udviklingsworkflow.