- WSL 2 ofron një bërthamë Linux reale dhe përshpejton Docker në Dritaret me konsum më të ulët të burimeve.
- Docker Desktop me backend-in WSL 2 thjeshton integrimin, ruajtje dhe menaxhim nga VS Code.
- Është e mundur të ekzekutoni Docker direkt në WSL 2 pa Docker Desktop, duke rregulluar DOCKER_HOST dhe sigurinë.
- Performancë e përmirësuar gjatë punës brenda sistemit të skedarëve WSL dhe me integrime aktive WSL.

Nëse punoni në Windows dhe dëshironi të zhvilloni sikur të ishit në Linux, kombinimi i WSL 2 dhe Docker është një nga më të mirat që mund të konfiguroni në makinën tuaj. Ky integrim ju lejon të ekzekutoni kontejnerë Linux dhe Windows në të njëjtën makinë, të konsumoni më pak burime dhe të përjetoni një nisje daemon dukshëm më të shpejtë krahasuar me opsione të tjera që kërkojnë më shumë burime.
Në rreshtat e mëposhtëm, do të gjeni një udhëzues të plotë për konfigurimin e Docker Desktop me një backend të WSL 2 , ose nëse preferoni, ekzekutimin e Docker direkt brenda WSL 2 pa u mbështetur në Docker Desktop. Gjithashtu do të shihni se si ta shfrytëzoni atë me Visual Studio Code, këshilla për performancën, shtigjet e ruajtjes dhe një seksion për zgjidhjen e problemeve me gabime të zakonshme dhe zgjidhjet e tyre.
Kontejnerët dhe WSL 2: Çfarë duhet të dini
Docker paketon aplikacionet dhe varësitë e tyre në kontejnerë në mënyrë që ato të funksionojnë njësoj në çdo mjedis . Ndryshe nga një VM tradicionale, një kontejner nuk ka nevojë për një sistem operativ të plotë: ai ndan bërthamën pritëse dhe shton vetëm atë që aplikacioni juaj nuk e ka tashmë, duke zvogëluar madhësinë dhe duke përshpejtuar ekzekutimin.
Krahasuar me një makinë virtuale, kjo qasje kursen memorie dhe CPU sepse nuk ekzekuton një sistem të tërë operativ . Në Windows, WSL 2 ofron një kernel të vërtetë Linux me mbështetje për thirrjet e sistemit, kështu që Docker mund të funksionojë në mënyrë native me performancë shumë të fortë.
Një tjetër avantazh kyç është disponueshmëria e vazhdueshme. Falë kontejnerëve dhe orkestruesve si Kubernetes, ju mund të përditësoni shërbimet version pas versioni , të zëvendësoni kontejnerët menjëherë dhe të mirëmbani rishikime të shumta si kopje rezervë pa e çaktivizuar të gjithë sistemin.
Shkurt, Docker nxit mjedise të qëndrueshme, minimizon konfliktet e varësisë dhe përshpejton vendosjet. I kombinuar me WSL 2 në Windows, ju merrni një rrjedhë pune Linux pa u larguar nga desktopi juaj, me integrim automatik të skedarëve dhe porteve të ekspozuara ndaj localhost.
Parakushtet e Windows
Verifikoni që Windows 10/11 juaj i plotëson kërkesat minimale: 64-bit, virtualizimin e aktivizuar në BIOS/UEFI dhe të paktën 4 GB RAM. Në versionet moderne, mjafton vetëm aktivizimi i WSL dhe platformës së tij të virtualizimit.
Për të aktivizuar komponentët nga PowerShell si administrator, mund të përdorni komanda si " aktivizo WSL" dhe "Platforma e Makinës Virtuale ". Në sistemet e përditësuara, procesi thjeshtohet me WSL:
wsl --install
Nëse tashmë keni WSL, vendosni WSL 2 si parazgjedhje dhe verifikoni ose migroni shpërndarjet e instaluara:
wsl --set-default-version 2
wsl -l -v
wsl --set-version Ubuntu 2
Për të zgjedhur shpërndarjen parazgjedhur me të cilën do të integroheni, mund ta ndryshoni vlerën parazgjedhur kur është e nevojshme:
wsl -s Ubuntu
Instaloni Docker Desktop me një motor të bazuar në WSL 2
Rruga më e drejtpërdrejtë për një mjedis të përsosur është përdorimi i Docker Desktop me një backend të WSL 2. Shkarkoni instaluesin Docker Desktop për Windows, ekzekutojeni atë dhe ndiqni udhëzuesin. Nëse sistemi juaj e mbështet atë, do të zgjidhet përdorimi i motorit WSL 2 ose do t'ju kërkohet ta aktivizoni atë gjatë instalimit.
Pasi të hapni Docker Desktop, hapni panelin e Cilësimeve dhe, në seksionin e Përgjithshëm, aktivizoni opsionin e motorit të bazuar në WSL 2 nëse nuk është aktivizuar tashmë. Kjo do t'ju lejojë të ekzekutoni kontejnerë Linux nga Windows pa Hyper-V tradicional.
Më pas, shkoni te Cilësimet > Burimet > Integrimi i WSL dhe aktivizoni integrimin për shpërndarjen/shpërndarjet WSL 2 që do të përdorni (për shembull, Ubuntu). Nëse skeda e integrimit të WSL nuk shfaqet, verifikoni që jeni në modalitetin e kontejnerëve Linux dhe jo në modalitetin e kontejnerëve Windows.
Për të verifikuar që gjithçka është në vend, hapni shpërndarjen tuaj WSL (për shembull, Ubuntu) dhe ekzekutoni komandat e verifikimit :
docker --version
docker run hello-world
Kjo konfirmon që binarja CLI dhe daemoni po përgjigjen. Nëse mund të nxirrni imazhin e testit "Përshëndetje Botë", integrimi po funksionon.
Zhvillimi në kontejnerë me kodin Visual Studio
Me WSL 2 dhe Docker të instaluar dhe në punë, përvoja e zhvillimit është përmirësuar shumë me Visual Studio Code dhe tre zgjerime zyrtare: WSL, Dev Containers dhe Docker. Secila prej tyre ofron një pjesë të enigmës për të punuar me kontejnerë në Windows.
Instaloni shtesën WSL për të hapur dosje nga shpërndarja juaj direkt në VS Code. Në këtë mënyrë nuk do të keni probleme me shtigje, skedarë binare të papajtueshëm ose probleme me lejet midis sistemeve.
Instaloni Dev Containers për të hapur dosjen e projektit tuaj në një kontejner dhe për të zhvilluar duke përdorur mjedisin e përcaktuar në një Dockerfile dhe një skedar devcontainer.json. Është një mënyrë e përshtatshme për të standardizuar mjetet dhe varësitë në të gjithë ekipin tuaj.
Gjithashtu instaloni shtesën Docker për të kompiluar, ekzekutuar dhe menaxhuar imazhe, kontejnerë dhe vëllime direkt nga shiriti anësor i VS Code . Kjo i thjeshton shumë detyrat e përditshme pa dalë nga redaktori.
Një rrjedhë tipike pune do të ishte: klononi projektin në WSL, hapeni atë me code .dhe nis veprimin Dev Containers në paletën e komandave për të Hapeni përsëri në enëKodi VS do të gjenerojë një dosje .devcontainer me Dockerfile dhe devcontainer.json tuaj të përshtatshme për grumbullin tuaj (p.sh., Python/Django) dhe do të ndërtojë imazhin.
Verifikoni që ende po përdorni Linux në terminal i integruar me VS Code: uname y python3 --versionDo të shihni Linux (WSL 2) dhe versionin e Piton të përcaktuara nga kontejneri, i cili mund të ndryshojë nga ai që keni në shpërndarje. Me konfigurimin e Ekzekutoni dhe korrigjoni gabimet (për shembull, profili Django), do të jeni në gjendje të ekzekutoni dhe debugoni aplikacionin tuaj në kontejner, duke hyrë në URL-në lokale që unë tregoj, zakonisht http://127.0.0.1:8000/.
Ekzekutimi i Docker pa Docker Desktop: Instalim direkt në WSL 2
Nëse doni të shmangni Docker Desktop për shkak të licencimit ose preferencës personale, mund të instaloni Docker Engine brenda shpërndarjes suaj WSL 2. Në Ubuntu, përditësoni paketat, shtoni depon zyrtar dhe vazhdoni me instalimin e komponentëve të nevojshëm.
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
Për të shmangur shtimin e `sudo` para çdo komande, shtoni përdoruesin tuaj në grupin `docker` dhe hyni përsëri në shpërndarje:
sudo usermod -aG docker $USER
Nisni daemonin kur keni nevojë për të brenda WSL 2 me:
sudo dockerd
Nëse shihni një mesazh si "API listen on /var/run/docker.sock" , serveri është duke u ekzekutuar. Hapni një terminal tjetër në shpërndarjen tuaj dhe testoni që gjithçka po përgjigjet me:
docker run --rm hello-world
Përdorimi i Docker CLI nga Windows me Docker në WSL 2
Për të thirrur Docker dhe Docker Compose nga ana e Windows ndërsa daemoni ndodhet në WSL 2, shkarkoni docker.exe dhe docker-compose.exe dhe shtojini ato në PATH-in e përdoruesit tuaj të Windows. Kjo do t'ju lejojë të ekzekutoni komanda nga PowerShell ose VS Code në terminalet e Windows.
Mund të krijoni një skript PowerShell që merr adresën IP të shpërndarjes WSL 2 dhe nis daemon-in që dëgjon në TCP, duke vendosur variablin e mjedisit DOCKER_HOST në Windows. Një shembull i rrjedhës mund të jetë:
$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"
Do të shihni paralajmërime që tregojnë se hapja e daemonit pa TLS është e pasigurt . Ky konfigurim është ekskluzivisht për zhvillim lokal; mos e përdorni në prodhim. Mund të provoni sa vijon në një dritare tjetër të PowerShell:
docker version
docker container ls
docker run --rm hello-world
docker run -it --rm -p 8080:80 uzyexe/tetris
Nëse keni nevojë të orkestroni shërbime të shumta, docker-compose do të funksionojë akoma. Për shembull, me një skedar shembull, mund të nisni një aplikacion të drejtuar nga baza e të dhënave dhe të verifikoni hartëzimin e porteve duke hyrë në localhost në portin që keni ekspozuar.
Cilësimet e zakonshme në docker-compose pa Docker Desktop
Kur punoni pa Docker Desktop, disa automatizime nuk janë më të disponueshme, kështu që këshillohet të rregulloni dy gjëra në skedarin tuaj docker-compose.yml :
- Në vëllime që përdorin shenjën e theksit për shtëpinë
~Zëvendësojeni atë me rrugën tuaj aktuale në WSL 2, për shembull/mnt/c/Users/tu-usuarionëse po tregoni skedarë në C: nga shpërndarja. - Shto seksionin
extra_hostskur projekti juaj varet nga pseudonimihost.docker.internal:
extra_hosts:
- host.docker.internal:host-gateway
Kjo ju ndihmon të shmangni surprizat e lidhjes midis kontejnerëve dhe hostit, duke përsëritur veçoritë që Docker Desktop ofron si parazgjedhje.
Performanca dhe praktikat më të mira me WSL 2
Docker Desktop në WSL 2 përdor alokimin dinamik të memories , duke konsumuar vetëm atë që është e nevojshme dhe duke përshpejtuar operacionet intensive si ndërtimet. Për më tepër, nisja e ftohtë e daemonit është dukshëm më e shpejtë sesa me alternativat e bazuara në makinat virtuale konvencionale.
Rregulli i artë: mbajini skedarët e projektit tuaj brenda Sistemi i skedarëve WSL 2Puna nga /home/tu-usuario Në këtë shpërndarje, shmangni penalizimet I/O që shfaqen kur montoni shtigjet e Windows nën /mnt/c për detyra me shumë akses në disk.
Në Docker Desktop, sigurohuni që keni aktivizuar "Përdor motorin e bazuar në WSL 2" dhe që keni aktivizuar integrimin e saktë të shpërndarjes në Cilësimet > Burimet > Integrimi i WSL. Nëse e bëni këtë dhe i zhvendosni projektet tuaja në rrugën e saktë, ndryshimi në performancë do të jetë shumë i dukshëm.
Nëse keni nevojë për izolim më të madh për shkak të politikave të korporatës, merrni në konsideratë përdorimin e modalitetit Hyper-V në Docker Desktop ose aktivizimin e Izolimit të Përmirësuar të Kontejnerëve. Për shumicën e skenarëve të zhvillimit, WSL 2 ofron një ekuilibër të shkëlqyer midis performancës dhe thjeshtësisë.
Dosjet e ruajtjes dhe shkurtoret e dobishme
Docker Desktop krijon dy shpërndarje të brendshme WSL për të dhënat tuaja: docker-desktop dhe docker-desktop-data . Ju mund të hyni në dosjet e tyre nga Windows duke përdorur shtigjet UNC nëse është e nevojshme për të inspektuar përmbajtjen e tyre.
Një truk i dobishëm: nga lançimi i shpërndarjes suaj WSL explorer.exe . Për të hapur direktorinë aktuale në File Explorer, mund të lundroni direkt në pikat e montimit të përhershme me:
\\wsl$\<Distro>\mnt\wsl
Zëvendësoni <Distro> me emrin e shpërndarjes suaj, siç është Ubuntu-24.04, për të gjetur vendet e brendshme ku WSL ekspozon vëllimet e saj dhe ku Docker Desktop ruan të dhënat kur punoni mbi WSL 2.
Zgjidhja e problemeve të zakonshme
Nëse vini nga versione të mëparshme të integrimit, mund të keni ende një kontekst të vjetër Docker të quajtur wsl që nuk është më në përdorim . Kontrolloni kontekstet tuaja dhe fshijini ato për të shmangur gabimet.
docker context ls
docker context rm wsl
Ky kontekst i vjetëruar mund të shkaktojë mesazhe gabimi kur hapen tubat docker_wsl në Windows. Heqja e tij rikthehet në konfigurimin e parazgjedhur që funksionon si nga Windows ashtu edhe nga WSL 2.
Nëse nuk e shihni seksionin Integrimi WSL në Docker Desktop, mund të jeni në modalitetin e kontejnerëve të Windows . Kaloni në kontejnerët Linux duke përdorur ikonën e tabakasë së sistemit. Pastaj kthehuni te Cilësimet për të aktivizuar integrimin.
Mbani mend se WSL ekspozon sistemin e skedarëve ndaj hostit në \\wsl$\Kjo nuk është unike për Docker Desktop; është pjesë e modelit të ndërveprimit WSL. Docker Desktop, nga ana e tij, funksionon në shpërndarjen e vet të brendshme. dok-desktop, me të njëjtën izolim si çdo shpërndarje tjetër WSL; bashkëvepron me të tjerët vetëm kur aktivizoni integrimin WSL.
Nëse po kërkoni ta forconi mjedisin tuaj për arsye sigurie, merrni në konsideratë përdorimin e politikave Hyper-V ose të izolimit të avancuar të kontejnerëve. Për zhvillim të përgjithshëm, WSL 2 është i mjaftueshëm, por disa organizata preferojnë mbrojtje shtesë në varësi të nivelit të tyre të rrezikut.
Me të gjitha sa më sipër, tani keni një pamje të plotë për të zgjedhur se si të punoni: përdorni Docker Desktop me motorin WSL 2 për një përvojë të udhëhequr dhe të qëndrueshme, ose instaloni Docker direkt në WSL 2 për të zvogëluar varësitë e jashtme; nëse kombinoni edhe VS Code, zgjerimet e tij dhe i strehoni projektet brenda sistemit të skedarëve WSL, do të shijoni një mjedis të shkathët dhe të qëndrueshëm, me kontrolle të performancës të rregulluara mirë, shtigje të qarta të të dhënave dhe zgjidhje të menjëhershme për gabimet e zakonshme.
Shkrimtar i apasionuar pas botës së bajteve dhe teknologjisë në përgjithësi. Më pëlqen të ndaj njohuritë e mia përmes shkrimit, dhe kjo është ajo që do të bëj në këtë blog, duke ju treguar të gjitha gjërat më interesante në lidhje me pajisjet, softuerin, harduerin, tendencat teknologjike dhe më shumë. Qëllimi im është t'ju ndihmoj të lundroni në botën dixhitale në një mënyrë të thjeshtë dhe argëtuese.
Indeks
- 1 Kontejnerët dhe WSL 2: Çfarë duhet të dini
- 2 Parakushtet e Windows
- 3 Instaloni Docker Desktop me një motor të bazuar në WSL 2
- 4 Zhvillimi në kontejnerë me kodin Visual Studio
- 5 Ekzekutimi i Docker pa Docker Desktop: Instalim direkt në WSL 2
- 6 Performanca dhe praktikat më të mira me WSL 2
- 7 Dosjet e ruajtjes dhe shkurtoret e dobishme
- 8 Zgjidhja e problemeve të zakonshme