Integrarea WSL2 cu Docker pe Windows: Un ghid practic și complet

Ultima actualizare: 29/10/2025
Autorul: Isaac
  • WSL 2 oferă un kernel Linux real și accelerează Docker în ferestre din cu un consum mai mic de resurse.
  • Docker Desktop cu backend WSL 2 simplifică integrarea, depozitare și management din VS Code.
  • Este posibil să rulați Docker direct în WSL 2 fără Docker Desktop, prin ajustarea DOCKER_HOST și a securității.
  • Performanță îmbunătățită atunci când se lucrează în sistemul de fișiere WSL și cu integrări WSL active.

Integrarea WSL2 cu Docker pe Windows

Dacă lucrezi în Windows și vrei să dezvolți ca și cum ai fi în Linux, perechea formată de WSL 2 și Docker Este unul dintre cele mai bune lucruri pe care le poți instala pe computer. Cu această integrare, vei avea containere Linux și Windows pe aceeași mașină, un consum redus de resurse și... cizmă mult mai rapid decât în ​​cazul altor opțiuni mai grele.

În rândurile următoare veți găsi un ghid complet pentru reglajul fin Docker Desktop cu backend WSL 2Sau, dacă preferați, puteți rula Docker direct în WSL 2 fără a vă baza pe Docker Desktop. De asemenea, veți învăța cum să îl utilizați cu Visual Studio Code, veți primi sfaturi despre performanță, căi de stocare și veți găsi o secțiune de depanare cu erori frecvente și soluțiile aferente.

Containere și WSL 2: Ce trebuie să știți

Docker împachetează aplicațiile și dependențele acestora în containere astfel încât rulează la fel în orice mediuSpre deosebire de o mașină virtuală clasică, un container nu are nevoie de un sistem de operare complet: acesta partajează kernelul gazdă și adaugă doar ceea ce aplicația nu are deja disponibil, reducând dimensiunea și accelerând execuția.

Comparativ cu o mașină virtuală, această abordare economisește memorie și CPU deoarece Nu pornește întregul sistem de operarePe Windows, WSL 2 oferă un kernel Linux real cu suport pentru apeluri de sistem, astfel încât Docker poate rula nativ cu performanțe foarte solide.

Un alt avantaj cheie este disponibilitatea continuă. Datorită containerelor și orchestratorilor precum Kubernetes, puteți Servicii de actualizare după versiune, înlocuiți containerele cât timp sunt fierbinți și păstrați mai multe revizii ca rezervă fără a scoate din funcțiune întregul sistem.

În concluzie, Docker promovează medii consistente, minimizează conflictele de dependențe și accelerează implementările. În combinație cu WSL 2 pe Windows, Obțineți un flux de lucru Linux fără a părăsi desktopul, cu integrare automată a fișierelor și porturilor expuse la localhost.

Cerințe preliminare pentru Windows

Verifică dacă Windows 10/11 îndeplinește cerințele minime: 64 de biți, virtualizare activată în BIOS/UEFI și cel puțin 4 GB de RAM. În versiunile moderne, simpla activare a WSL și a platformei sale de virtualizare este suficientă.

Pentru a activa componentele din PowerShell Ca administrator, puteți utiliza comenzi în stilul Activarea WSL și a platformei de mașini virtualePe echipamentele actualizate, procesul este simplificat cu WSL:

wsl --install

Dacă ați avut deja WSL, setează WSL 2 în mod implicit și verificați sau migrați distribuțiile instalate:

wsl --set-default-version 2
wsl -l -v
wsl --set-version Ubuntu 2

Pentru a alege distribuția implicită cu care vă veți integra, puteți modificarea valorii implicite când ai nevoie de ea:

wsl -s Ubuntu

Instalați Docker Desktop cu un motor bazat pe WSL 2

Cea mai directă cale către un mediu rafinat este de a folosi Docker Desktop cu backend WSL 2Descărcați programul de instalare Docker Desktop pentru Windows, rulați-l și urmați instrucțiunile expertului. Dacă sistemul dvs. îl acceptă, va fi selectată utilizarea motorului WSL 2 sau vi se va solicita să îl activați în timpul instalării.

  Telefonul dvs. nu a schimbat automat ora? Soluții complete

După pornirea Docker Desktop, deschideți panoul său de Setări cont Și în secțiunea General, activați opțiunea motor bazat pe WSL 2 dacă nu este deja activată. Aceasta vă va permite să rulați containere Linux din Windows fără Hyper-V tradițional.

Apoi, intra Setări > Resurse > Integrare WSL și activați integrarea pentru distribuția (distribuțiile) WSL 2 pe care le veți utiliza (de exemplu, Ubuntu). Dacă fila Integrare WSL nu apare, verificați dacă vă aflați în modul Containere Linux și nu în modul Containere Windows.

Pentru a verifica dacă totul este la locul lui, deschideți distribuția WSL (de exemplu, Ubuntu) și executați comenzile de verificare:

docker --version
docker run hello-world

Aceasta confirmă că binarul CLI și daemonul Ei răspund. Dacă poți extrage imaginea de test „salut lume”, integrarea funcționează.

Dezvoltarea în containere cu Visual Studio Code

Cu WSL 2 și Docker funcționale, experiența de dezvoltare este mult îmbunătățită cu Codul Visual Studio și trei extensii oficiale: WSL, Dev Containers și Docker. Fiecare contribuie cu o piesă a puzzle-ului pentru lucrul cu containere din Windows.

Instalează extensia WSL pentru a deschide folderele din distribuția ta direct în VS Code. În acest fel, nu va trebui să te chinui cu căile de acces. binare incompatibile sau probleme de permisiuni între sisteme.

Instalați Dev Containers pentru a deschide folderul proiectului într-un container și a dezvolta cu acesta mediu definit într-un fișier Dockerfile și un fișier devcontainer.json. Este o modalitate convenabilă de a standardiza instrumentele și dependențele echipei.

De asemenea, instalați extensia Docker pentru a compila, rula și gestiona imagini, containere și volume chiar din Docker. Bara laterală VS CodeÎți face viața de zi cu zi mult mai ușoară fără a părăsi editorul.

Un flux de lucru tipic ar fi: clonarea proiectului în WSL, deschiderea lui cu code .și lansați acțiunea Dev Containers din paleta de comenzi pentru a Redeschideți în recipientVS Code va genera un folder .devcontainer cu fișierul Dockerfile și fișierele devcontainer.json corespunzătoare stivei tale (de exemplu, Python/Django) și va construi imaginea.

Verificați dacă încă utilizați Linux în terminal integrat cu VS Code: uname y python3 --versionVeți vedea Linux (WSL 2) și versiunea de Piton definit de container, care poate diferi de cel pe care îl aveți în distribuție. Cu configurația Rulați și depanați (de exemplu, profilul Django), veți putea rula și depana aplicația în container, accesând URL-ul local pe care îl indic, de obicei http://127.0.0.1:8000/.

Rularea Docker fără Docker Desktop: Instalare directă în WSL 2

Dacă doriți să evitați Docker Desktop din cauza licențierii sau preferințelor, puteți Instalați Docker Engine în distribuția WSL 2În Ubuntu, actualizați pachetele, adăugați depozitul oficial și continuați cu instalarea componentelor necesare:

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

Pentru a evita să fie nevoie să se introducă sudo înaintea fiecărei comenzi, adăugați utilizatorul în grup. docher și reporniți sesiunea distribuției:

  Cum se remediază codul de eroare 39 pe Disney Plus

sudo usermod -aG docker $USER

Demonul începe când ai nevoie de el în WSL 2 cu:

sudo dockerd

Dacă vedeți un mesaj ca acesta API-ul ascultă pe /var/run/docker.sockServerul rulează. Deschideți un alt terminal pe distribuție și testați dacă totul răspunde cu:

docker run --rm hello-world

Utilizarea Docker CLI din Windows cu Docker în WSL 2

Pentru a invoca Docker și Docker Compose din Windows în timp ce daemonul se află în WSL 2, descărcați docker.exe și docker-compose.exe Adăugați-le la calea utilizatorului Windows. Acest lucru vă va permite să rulați comenzi din PowerShell sau VS Code în terminalele Windows.

Puteți crea un scenariu Folosește PowerShell pentru a obține adresa IP a distribuției WSL 2 și a porni daemonul care ascultă pe TCP, setând variabila de mediu. DOCKER_HOST în Windows. Un exemplu de flux de lucru ar putea fi:

$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"

Veți vedea avertismente care indică faptul că deschiderea daemonului fără TLS este nesigurAceastă configurație este exclusiv pentru dezvoltare locală; nu o utilizați în producție. Puteți încerca următoarele într-o altă fereastră PowerShell:

docker version
docker container ls
docker run --rm hello-world
docker run -it --rm -p 8080:80 uzyexe/tetris

Dacă trebuie să orchestrați mai multe servicii, docker-compose va funcționa în continuare. De exemplu, cu un fișier exemplu ați putea lansa o aplicație cu o bază de date și verificarea mapării porturilor accesând localhost pe portul pe care l-ai expus.

Setări comune în docker-compose fără Docker Desktop

Când lucrați fără Docker Desktop, unele automatizări nu mai sunt disponibile, așa că este recomandabil să ajustați două lucruri în Docker-compose.yml:

  • În volumele care folosesc semnul de accent pentru acasă ~Înlocuiți-l cu calea dvs. de acasă reală în WSL 2, de exemplu /mnt/c/Users/tu-usuario dacă indicați fișiere în C: din distribuție.
  • Adăugați secțiunea extra_hosts când proiectul tău depinde de alias host.docker.internal:

extra_hosts:
- host.docker.internal:host-gateway

Acest lucru vă ajută să evitați surprizele legate de conectivitate între containere și gazdă. facilități de replicare pe care Docker Desktop o oferă ca standard.

Performanță și cele mai bune practici cu WSL 2

Docker Desktop pe WSL 2 SUA alocare dinamică a memorieiconsumând doar ceea ce este necesar și accelerând operațiuni intensive, cum ar fi construcțiile. În plus, pornirea la rece a daemonului este semnificativ mai rapidă decât în ​​cazul alternativelor bazate pe mașini virtuale convenționale.

Regula de aur: păstrați fișierele proiectului în limitele Sistem de fișiere WSL 2Lucrează de la /home/tu-usuario În această distribuție, evitați penalizările I/O care apar la montarea căilor Windows sub /mnt/c pentru sarcini cu mult acces la disc.

În Docker Desktop, asigură-te că ai activ Utilizați motorul bazat pe WSL 2 Și activați integrarea corectă a distribuției în Setări > Resurse > Integrare WSL. Dacă faceți acest lucru și mutați proiectele pe calea corectă, diferența de performanță este foarte vizibilă.

  VirtualBox folosește prea mult CPU: cauze reale și soluții dovedite

Dacă aveți nevoie de mai multă izolare din cauza politicilor corporative, luați în considerare utilizarea modului Hyper-V în Docker Desktop sau activați Enhanced Container Isolation. Pentru majoritatea scenariilor de dezvoltare, WSL 2 oferă un echilibru excelent între performanță și simplitate.

Foldere de stocare și scurtături utile

Docker Desktop creează două distribuții WSL interne pentru datele dvs.: docker-desktop y docker-desktop-dataPuteți accesa folderele sale din Windows folosind căi UNC dacă trebuie să inspectați conținutul.

Un truc util: de la lansarea distribuției WSL explorer.exe . Pentru a deschide directorul curent în File Explorer, puteți naviga direct la punctele de montare persistente cu:

\\wsl$\<Distro>\mnt\wsl

Înlocui după numele distribuției dvs., cum ar fi Ubuntu-24.04, pentru a găsi locațiile interne unde WSL își afișează volumele și unde Docker Desktop stochează datele atunci când lucrează pe WSL 2.

Depanarea problemelor comune

Dacă folosești versiuni anterioare ale integrării, este posibil să ai deja un context Docker vechi numit wsl. nefolositVerificați contextele și ștergeți-le pentru a evita erorile:

docker context ls
docker context rm wsl

Acest context învechit poate cauza mesaje de eroare la deschiderea țevilor din docker_wsl pe Windows. Eliminarea acestuia revine la setările implicite care funcționează atât în ​​Windows, cât și în WSL 2.

Dacă nu vedeți secțiunea Integrare WSL în Docker Desktop, este posibil să fiți în modul Containere ferestreComutați la containerele Linux de la pictograma din bara de sistem. Apoi reveniți la Setări pentru a activa integrarea.

Rețineți că WSL expune sistemul de fișiere gazdei în \\wsl$\Acest lucru nu este specific Docker Desktop; face parte din modelul de interoperabilitate WSL. Docker Desktop, la rândul său, rulează pe propria distribuție internă. docker-desktop, cu aceeași izolare ca orice altă distribuție WSL; interacționează cu altele doar atunci când activați integrarea WSL.

Dacă doriți să consolidați mediul din motive de securitate, luați în considerare utilizarea Hyper-V sau politici avansate de izolare a containerelor. Pentru dezvoltare generală, WSL 2 este suficient, dar unele organizații preferă protecție suplimentară în funcție de nivelul lor de risc.

Cu toate cele de mai sus, acum aveți o imagine completă din care puteți alege cum să lucrați: utilizați Docker Desktop cu motorul WSL 2 pentru o experiență ghidată și stabilă sau instalați Docker direct pe WSL 2 pentru a reduce dependențele externe; dacă combinați și VS Code, extensiile sale și găzduiți proiectele în cadrul sistemului de fișiere WSL, vă veți bucura de un mediu agil și consistent, cu... controale fine de performanță, căi de date clare și soluții imediate pentru greșelile frecvente.