- WSL 2 tilbyr en kjerne Linux ekte og akselererer Docker i Windows med lavere ressursforbruk.
- Docker Desktop med WSL 2-backend forenkler integrasjonen lagring og administrasjon fra VS Code.
- Det er mulig å kjøre Docker direkte i WSL 2 uten Docker Desktop, ved å justere DOCKER_HOST og sikkerhet.
- Forbedret ytelse når du arbeider i WSL-filsystemet og med aktive WSL-integrasjoner.
Hvis du jobber på Windows og ønsker å utvikle som om du var på Linux, er kombinasjonen av WSL 2 og Docker noe av det beste du kan sette opp på maskinen din. Denne integrasjonen lar deg kjøre Linux- og Windows-containere på samme maskin, bruke færre ressurser og oppleve betydelig raskere daemon -oppstart sammenlignet med andre, mer ressurskrevende alternativer.
I de følgende linjene finner du en komplett veiledning for å sette opp Docker Desktop med en WSL 2-backend , eller hvis du foretrekker det, kjøre Docker direkte i WSL 2 uten å være avhengig av Docker Desktop. Du vil også se hvordan du kan utnytte det med Visual Studio Code, ytelsestips, lagringsbaner og en feilsøkingsseksjon med vanlige feil og løsninger på disse.
Containere og WSL 2: Hva du trenger å vite
Docker pakker applikasjoner og deres avhengigheter inn i containere slik at de kjører likt i alle miljøer . I motsetning til en tradisjonell virtuell maskin trenger ikke en container et komplett operativsystem: den deler vertskjernen og legger bare til det appen din ikke allerede har, noe som reduserer størrelsen og øker kjørehastigheten.
Sammenlignet med en virtuell maskin sparer denne tilnærmingen minne og CPU fordi den ikke kjører et helt operativsystem . På Windows tilbyr WSL 2 en ekte Linux-kjerne med støtte for systemkall, slik at Docker kan kjøres innebygd med svært solid ytelse.
En annen viktig fordel er kontinuerlig tilgjengelighet. Takket være containere og orkestratorer som Kubernetes, kan du oppdatere tjenester versjon for versjon , erstatte containere underveis og vedlikeholde flere revisjoner som sikkerhetskopi uten å måtte ta ned hele systemet.
Kort sagt, Docker fremmer konsistente miljøer, minimerer avhengighetskonflikter og akselererer distribusjoner. Kombinert med WSL 2 på Windows får du en Linux-arbeidsflyt uten å forlate skrivebordet, med automatisk integrering av filer og porter eksponert for localhost.
Windows-forutsetninger
Bekreft at Windows 10/11 oppfyller minimumskravene: 64-bit, virtualisering aktivert i BIOS/UEFI og minst 4 GB RAM. På moderne versjoner er det tilstrekkelig å bare aktivere WSL og virtualiseringsplattformen.
For å aktivere komponentene fra PowerShell som administrator, kan du bruke kommandoer som « aktiver WSL» og «Virtual Machine Platform ». På oppdaterte systemer forenkles prosessen med WSL:
wsl --install
Hvis du allerede har WSL, sett WSL 2 som standard og bekreft eller migrer de installerte distribusjonene dine:
wsl --set-default-version 2
wsl -l -v
wsl --set-version Ubuntu 2
For å velge standarddistroen du vil integrere med, kan du endre standardverdien når det er nødvendig:
wsl -s Ubuntu
Installer Docker Desktop med en WSL 2-basert motor
Den mest direkte veien til et polert miljø er å bruke Docker Desktop med et WSL 2-backend . Last ned Docker Desktop-installasjonsprogrammet for Windows, kjør det og følg veiviseren. Hvis systemet ditt støtter det, vil bruk av WSL 2-motoren bli valgt, eller du vil bli bedt om å aktivere den under installasjonen.
Etter at du har startet Docker Desktop, åpner du Innstillinger- panelet og aktiverer alternativet for WSL 2-basert motor i Generelt-delen hvis det ikke allerede er aktivert. Dette lar deg kjøre Linux-containere fra Windows uten tradisjonell Hyper-V.
Gå deretter til Innstillinger > Ressurser > WSL-integrasjon og aktiver integrasjon for WSL 2-distribusjonen(e) du skal bruke (for eksempel Ubuntu). Hvis WSL-integrasjonsfanen ikke vises, må du bekrefte at du er i Linux-containermodus og ikke Windows-containermodus.
For å bekrefte at alt er på plass, åpne WSL-distribusjonen din (for eksempel Ubuntu) og kjør verifiseringskommandoene :
docker --version
docker run hello-world
Dette bekrefter at CLI-binærfilen og daemonen svarer. Hvis du kan hente hello-world-testbildet, fungerer integrasjonen.
Utvikling i containere med Visual Studio Code
Med WSL 2 og Docker oppe og går, forbedres utviklingsopplevelsen betraktelig med Visual Studio Code og tre offisielle utvidelser: WSL, Dev Containers og Docker. Hver av dem gir en brikke i puslespillet for å jobbe med containere på Windows.
Installer WSL-utvidelsen for å åpne mapper fra distroen din direkte i VS Code. På denne måten slipper du å slite med stier, inkompatible binærfiler eller tillatelsesproblemer mellom systemer.
Installer Dev Containers for å åpne prosjektmappen din i en container og utvikle ved hjelp av miljøet som er definert i en Dockerfile og en devcontainer.json-fil. Det er en praktisk måte å standardisere verktøy og avhengigheter på tvers av teamet ditt.
Installer også Docker-utvidelsen for å kompilere, kjøre og administrere bilder, containere og volumer direkte fra VS Code-sidefeltet . Det forenkler daglige oppgaver betraktelig uten å forlate redigeringsprogrammet.
En typisk arbeidsflyt ville være: klon prosjektet i WSL, åpne det med code .og start handlingen Dev Containers i kommandopaletten for å Åpne igjen i beholderenVS Code vil generere en .devcontainer-mappe med Dockerfile og devcontainer.json som passer til stacken din (f.eks. Python/Django) og bygge imaget.
Bekreft at du fortsatt kjører Linux i terminal integrert med VS-kode: uname y python3 --versionDu vil se Linux (WSL 2) og versjonen av Python definert av containeren, som kan være forskjellig fra den du har i distroen. Med konfigurasjonen av Løp og feilsøk (for eksempel Django-profil), vil du kunne kjøre og feilsøke applikasjonen din i containeren, og få tilgang til den lokale URL-en jeg angir, vanligvis http://127.0.0.1:8000/.
Kjøre Docker uten Docker Desktop: Direkte installasjon i WSL 2
Hvis du vil unngå Docker Desktop på grunn av lisens eller personlige preferanser, kan du installere Docker Engine i WSL 2-distribusjonen din . På Ubuntu oppdaterer du pakker, legger til det offisielle depotet og fortsetter med installasjonen av de nødvendige komponentene.
sudo apt update && sudo apt upgrade
source /etc/os-release
curl -fsSL https://download.docker.com/linux/${ID}/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
For å unngå å måtte legge til `sudo` før hver kommando, legg til brukeren din i `docker`- gruppen og logg inn i distroen igjen:
sudo usermod -aG docker $USER
Start daemonen når du trenger den i WSL 2 med:
sudo dockerd
Hvis du ser en melding som «API listen on /var/run/docker.sock» , kjører serveren. Åpne en annen terminal på distribusjonen din og test at alt svarer med:
docker run --rm hello-world
Bruk av Docker CLI fra Windows med Docker i WSL 2
For å starte Docker og Docker Compose fra Windows-siden mens daemonen befinner seg i WSL 2, last ned docker.exe og docker-compose.exe og legg dem til i Windows-brukerens PATH. Dette lar deg kjøre kommandoer fra PowerShell eller VS Code i Windows-terminaler.
Du kan opprette et PowerShell- skript som henter IP-adressen til WSL 2-distribusjonen og starter daemon-lytting på TCP, ved å sette miljøvariabelen DOCKER_HOST i Windows. Et eksempel på flyten kan være:
$ip = (wsl sh -c "hostname -I").Split(" ")[0]
$DOCKER_HOST = "tcp://" + $ip + ":2375"
[System.Environment]::SetEnvironmentVariable('DOCKER_HOST',$DOCKER_HOST,[System.EnvironmentVariableTarget]::User)
wsl sh -c "sudo dockerd --tls=false -H tcp://$ip"
Du vil se advarsler som indikerer at det er usikkert å åpne daemonen uten TLS . Denne konfigurasjonen er utelukkende for lokal utvikling; ikke bruk den i produksjon. Du kan prøve følgende i et annet PowerShell-vindu:
docker version
docker container ls
docker run --rm hello-world
docker run -it --rm -p 8080:80 uzyexe/tetris
Hvis du trenger å orkestrere flere tjenester, vil docker-compose fortsatt fungere. Med en eksempelfil kan du for eksempel starte en databasedrevet app og bekrefte porttilordningen ved å få tilgang til localhost på porten du har eksponert.
Vanlige innstillinger i docker-compose uten Docker Desktop
Når du jobber uten Docker Desktop, er ikke alle automatiseringer lenger tilgjengelige, så det er lurt å justere to ting i docker-compose.yml-filen din :
- I bind som bruker aksenttegnet for hjem
~Erstatt den med din faktiske hjemsti i WSL 2, for eksempel/mnt/c/Users/tu-usuariohvis du peker til filer i C: fra distroen. - Legg til seksjonen
extra_hostsnår prosjektet ditt er avhengig av aliasethost.docker.internal:
extra_hosts:
- host.docker.internal:host-gateway
Dette hjelper deg med å unngå overraskelser i forbindelse med tilkobling mellom containere og verten, og replikerer funksjoner som Docker Desktop tilbyr som standard.
Ytelse og beste praksis med WSL 2
Docker Desktop på WSL 2 bruker dynamisk minneallokering , og bruker kun det som er nødvendig og akselererer intensive operasjoner som bygg. Videre er daemonens kaldstart betydelig raskere enn med alternativer basert på konvensjonelle virtuelle maskiner.
Den gylne regelen: hold prosjektfilene dine innenfor WSL 2-filsystemetArbeid fra /home/tu-usuario I denne distroen, unngå I/O-straffene som oppstår når du monterer Windows-stier under /mnt/c for oppgaver med mye disktilgang.
I Docker Desktop må du sørge for at du har aktivert «Bruk WSL 2-basert motor» og at du har aktivert riktig distribusjonsintegrasjon i Innstillinger > Ressurser > WSL-integrasjon. Hvis du gjør dette og flytter prosjektene dine til riktig bane, vil ytelsesforskjellen være svært merkbar.
Hvis du trenger større isolasjon på grunn av bedriftens retningslinjer, bør du vurdere å bruke Hyper-V- modus i Docker Desktop eller aktivere Enhanced Container Isolation. For de fleste utviklingsscenarier tilbyr WSL 2 en utmerket balanse mellom ytelse og enkelhet.
Lagringsmapper og nyttige snarveier
Docker Desktop oppretter to interne WSL-distribusjoner for dataene dine: docker-desktop og docker-desktop-data . Du kan få tilgang til mappene deres fra Windows ved hjelp av UNC-baner om nødvendig for å inspisere innholdet.
Et hendig triks: fra WSL-distribusjonslanseringen din explorer.exe . For å åpne gjeldende katalog i Filutforsker kan du også navigere direkte til vedvarende monteringspunkter med:
\\wsl$\<Distro>\mnt\wsl
Erstatt <Distro> med navnet på distribusjonen din, for eksempel Ubuntu-24.04, for å finne de interne plasseringene der WSL eksponerer volumene sine og hvor Docker Desktop lagrer data når den arbeider over WSL 2.
Feilsøking av vanlige problemer
Hvis du bruker tidligere versjoner av integrasjonen, kan det hende du fortsatt har en gammel Docker-kontekst kalt wsl som ikke lenger er i bruk . Sjekk kontekstene dine og slett den for å unngå feil.
docker context ls
docker context rm wsl
Denne utdaterte konteksten kan forårsake feilmeldinger når du åpner docker_wsl- pipes i Windows. Hvis du fjerner den, tilbakestilles standardkonfigurasjonen som fungerer fra både Windows og WSL 2.
Hvis du ikke ser WSL-integrasjonsdelen i Docker Desktop, kan det hende du er i Windows-containermodus . Bytt til Linux-containere ved hjelp av systemstatusfeltikonet. Gå deretter tilbake til Innstillinger for å aktivere integrasjon.
Husk at WSL eksponerer filsystemet til verten i \\wsl$\Dette er ikke unikt for Docker Desktop; det er en del av WSL-interoperabilitetsmodellen. Docker Desktop kjører på sin egen interne distribusjon. docker-desktop, med samme isolasjon som enhver annen WSL-distribusjon; den samhandler bare med andre når du aktiverer WSL-integrasjon.
Hvis du ønsker å styrke miljøet ditt av sikkerhetsmessige årsaker, bør du vurdere å bruke Hyper-V eller avanserte policyer for containerisolering. For generell utvikling er WSL 2 tilstrekkelig, men noen organisasjoner foretrekker ekstra beskyttelse avhengig av risikonivået.
Med alt det ovennevnte har du nå et komplett bilde for å velge hvordan du skal jobbe: bruk Docker Desktop med WSL 2-motoren for en veiledet og stabil opplevelse, eller installer Docker direkte på WSL 2 for å redusere eksterne avhengigheter. Hvis du også kombinerer VS Code, utvidelsene og er vert for prosjektene i WSL-filsystemet, vil du nyte et smidig og konsistent miljø med finjusterte ytelseskontroller, tydelige databaner og umiddelbare løsninger på vanlige feil.
Lidenskapelig forfatter om verden av bytes og teknologi generelt. Jeg elsker å dele kunnskapen min gjennom å skrive, og det er det jeg skal gjøre i denne bloggen, vise deg alle de mest interessante tingene om dingser, programvare, maskinvare, teknologiske trender og mer. Målet mitt er å hjelpe deg med å navigere i den digitale verden på en enkel og underholdende måte.
