Пълно ръководство за създаване на среди с WSL2 + Docker + VS Code

Последна актуализация: 22/09/2025
Автор: Isaac
  • WSL2 предлага ядро Linux местен в Windows и страхотна производителност за Docker.
  • VS Code и Dev Containers осигуряват възпроизводими и преносими среди.
  • Инсталирайте Docker Desktop или нативния енджин на WSL2 въз основа на вашите правила.
  • Производителност: ZSH, FZF и Tmux, плюс отстраняване на проблеми с WSL2/Docker.

Среда за разработка с WSL2 Docker и VS Code

Ако работите с Windows и искате солидна среда за разработка с Linux, контейнери и модерен редактор, WSL2, Docker и VS Code формират печелившо триоТази комбинация ви позволява да програмирате на Linux, без да напускате Windows, да стартирате контейнери бързо и да отстранявате грешки в проекти удобно, всичко това на една и съща машина.

Идеята е проста: възползвайте се от WSL2 Linux ядрото, добавете Docker (чрез Docker Desktop или чрез инсталиране на native engine в дистрибуцията) и завършете с VS Code и Dev контейнери за да се получат възпроизводими среди. В следващите раздели ще видите стъпка по стъпка как да го настроите, с Практически препоръки, преки пътища, реални случаи и решения на типични проблеми.

Контейнери и защо са подходящи за WSL2 + VS Code

Docker ви позволява да пакетирате приложения с всичко необходимо изпълнявайте същото на всяка машинаЗа разлика от традиционната виртуална машина, контейнерите споделят ядрото на хоста, Те стартират по-бързо и консумират по-малкоОсвен това, те улесняват непрекъснатата наличност: качвате нова версия на контейнера и подменяте цялата система без спиране.

С WSL2, Windows се предлага с вградено истинско Linux ядро. Благодарение на това, Контейнерите за Linux работят директно на вашия компютър, а ако използвате Docker Desktop с WSL 2 backend, можете да стартирате Linux и Windows контейнери едновременно. Това съчетава производителност, съвместимост и унифициран работен процес.

Системни изисквания и подготовка

Първо, добра идея е да проверите дали Windows отговаря на изискванията за WSL2 и Docker Desktop. Проверете версиите и компилациите на Windows (Win + R, въведете „winver“) и имайте предвид, че Docker Desktop има специфични системни и лицензионни изисквания (безплатен за лична употреба и малки фирми).

За да инсталирате WSL2, използвайки опростения метод, отворете PowerShell o CMD с разрешения и изпълнява wsl --installТази команда активира необходимите компоненти, инсталира ядрото на Linux, задава WSL 2 като версия по подразбиране и изтегля Ubuntu по подразбиране. Рестартирайте, когато бъдете подканени.

След инсталацията, отворете дистрибуцията (Ubuntu, ако не сте я променили) и създайте вашата Потребителско име и парола за LinuxНе забравяйте, че докато въвеждате паролата, няма да виждате никакви символи: това е нормално. Този акаунт ще бъде по подразбиране и ще може да се изпълнява Sudo за административни задачи.

Поддържайте дистрибуцията актуална sudo apt update && sudo apt upgradeWindows не актуализира автоматично дистрибуцията, така че ти решаваш когаАко искате да добавите още дистрибуции, можете да го направите от Microsoft Store или като импортирате изображения.

Терминал, съхранение и редактор: първи решения

инсталирайте windows терминал за модерно изживяване с раздели, панели и теми. Управлява множество линии от команди безболезнено и персонализирайте по ваш вкус. Всеки път, когато добавяте WSL дистрибуция, съответният ѝ профил ще се появява в терминала.

Що се отнася до файловете на проекта, производителността е ключова: Ако използвате инструменти за Linux, запазете проектите във файловата система WSL2. (например \\wsl$\Ubuntu-22.04\home\tuusuario\proyecto). Достъпът до него е възможен и от двете страни, но Работата в /mnt/c с инструменти на Linux може да е по-бавна.

За да отворите текущата WSL папка в Explorer, изпълнете командата explorer.exe . (включва точката). И за да отворите папката във VS Code от WSL, използвайте code .С правилното разширение, VS Code свързва се със сървъра за разширения в WSL и забравяте за странните маршрути и двоичните проблеми.

Инсталиране на Docker Desktop с WSL 2 backend

Много удобен начин е да използвате Docker Desktop. Изтеглете, инсталирайте и активирайте го. „Използвайте двигателя, базиран на WSL 2“ в Настройки > Общи. След това в Настройки > Ресурси > WSL интеграция, изберете WSL2 дистрибуции където искате да активирате интеграцията.

Проверете инсталацията от вашата дистрибуция с docker --version и опитайте с docker run hello-worldАко всичко върви добре, ще имате Linux контейнери, работещи върху ядрото на WSL2 и управлявано от Docker Desktop на Windows.

  Как да използвате Microsoft Power Automate стъпка по стъпка: пълно и практично ръководство

Docker Desktop създава две специални WSL дистрибуции за съхранение и обслужване: docker-desktop y docker-desktop-dataЩе видите и техните маршрути, както \\wsl$\docker-desktop y \\wsl$\docker-desktop-dataАко трябва да намерите данните си от Windows, можете да отворите WSL обвивка и да я изпълните explorer.exe .или навигирайте до \\wsl\<Distro>\mnt\wsl.

Ако идвате от Стар преглед на Docker за WSL, може да има остарял контекст, наречен „wsl“. Проверете го с docker context ls; ако се появи, отстранете го с docker context rm wsl За да избегнете грешки като "open \\.\/pipe\/docker_wsl". В текущата интеграция трябва да използвате контекст по подразбиране.

Разработване в отдалечени контейнери с VS Code

За да работите удобно с контейнери, инсталирайте разширенията във VS Code ПСЖ, Контейнери за разработка y докерС тях ще можете да отворите вашия WSL проект във VS Code, а също и отворете отново папката в контейнер за разработка с целия стек готов.

Практически пример (Django). От вашия WSL терминал клонирайте хранилище, като например хранилище „Hello World“ на Django: git clone https://github.com/mattwojo/helloworld-django.git, въведете с cd helloworld-django и отворете VS Code с code .Проверете зеления индикатор за отдалечена WSL връзка в долния ляв ъгъл.

Отворете палитрата (Ctrl+Shift+P) и изберете „Контейнери за разработчици: Отваряне отново в контейнер“ (или „Отвори папка в контейнер…“, ако използвате Windows \\wsl$). Изберете подходящо определение (напр. Python 3 за Django). VS Code ще генерира папка .devcontainer с Dockerfile y devcontainer.json, ще изгради образа и ще повиши контейнера за разработка.

Отворете интегрирания терминал и го изпълнете uname за да потвърдите, че сте на Linux и python3 --version за да видите Python версията на контейнера. За дебъгване отидете в изгледа „Изпълнение и дебъгване“, създайте launch.json избиране на конфигурацията на рамката (в този случай Django) и натискане F5Отворете URL адреса, който терминалът ви казва (например, http://127.0.0.1:8000).

Контейнери за разработка и кодови пространства: Възпроизводими среди

Контейнерът за разработка се дефинира с .devcontainer/devcontainer.json и, по избор, a DockerfileТози подход позволява използвайте основни изображения или други персонализирани изображения, предварително инсталиране на зависимости, конфигуриране на разширения на VS Code и автоматизиране на команди след конфигуриране.

Сред най-често срещаните случаи на употреба са тези на Съвместна наука за данни (с Python, Jupyter, pandas, seaborn и хомогенен набор от зависимости) и тези на Node.js бекенд с PostgreSQL координирано с docker-compose.ymlПо този начин целият екип работи в една и съща среда, няма изненади поради местни различия.

Същата папка .devcontainer Работи в облака с GitHub Codespaces: Когато създавате Codespace, GitHub автоматично изгражда средата. Това насърчава безпроблемно превключване между локална среда и облак, възпроизводимост и бързо включване на нови сътрудници.

Най-добри практики: помислете за официални базови изображения devcontainers/, версия на папката .devcontainer, използва postCreateCommand за автоматизиране на инсталации и комбайни devcontainer.json с docker-compose.yml когато имате нужда от множество услуги.

Алтернатива: Docker без Docker Desktop (нативен енджин в WSL2)

Ако предпочитате да избягвате Docker Desktop (поради фирмена политика или личен избор), можете да инсталирате Docker енджин директно във вашата WSL2 дистрибуцияДобавете GPG ключа, официалното хранилище и пакетите (в Ubuntu):

Следвайте тези команди, за да добавите ключа и хранилището: # Clave oficial y repositorio
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo «deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https:\/\/download.docker.com\/linux\/ubuntu \n$(. \/etc\/os-release && echo «$VERSION_CODENAME») stable» |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Sudo актуализация ап-да
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Добавете потребителя си към групата docker, за да използвате CLI без sudo: sudo usermod -aG docker $USERЗатворете и отворете отново WSL. Проверете с docker run hello-worldЗа автоматично стартиране можете да използвате /etc/wsl.conf с [boot] y command = service docker startили systemd, ако вече е активиран на вашия WSL2 (на по-новите версии).

  Как да активирате хардуерно ускорено планиране на графичния процесор и да подобрите графичната производителност на вашия компютър

Мрежа и портове: от Windows можете да получите достъп до контейнери, публикувани в localhost благодарение на WSL2. Ако трябва да предоставите WSL2 услуги на вашата локална мрежа (напр. достъп от мобилно устройство), Използвайте прокси сървър за портове в Windows с Netsh и създава съответното правило за защитната стена. A писменост Типичният PowerShell получава WSL IP адрес и конфигурира portproxy и добавете правилото; по този начин избягвате повтарянето на команди след рестартиране.

Защо да изберете този маршрут? Избягвате да разчитате на лицензи или политики на Docker Desktop и контролирате всяка част. Като допълнение, можете да внедрите Портейнер За да управлявате контейнери чрез уеб интерфейса: създайте том и стартирайте контейнера с портове 8000 и 9443; достъп https://localhost:9443 (приема сертификата), създава администраторския потребител и Управлявайте Docker-а си с кликвания.

Git, SSH и къде да клонирате код

В WSL2 можете да клонирате с Git във вашата директория Начална страница на Linux и да работят с VS Code. Това обикновено е най-удобният вариант: по-добра производителност и по-малко триенеАко предпочитате да клонирате от контейнер, ще трябва да управлявате идентификационните данни и ключовете. SSH вътре в контейнера или монтирайте вашия ~/.ssh внимателно.

Графичен потребителски интерфейс за Git? Инструменти като Sublime Merge или GitKraken могат да работят в този сценарий. GitKraken може дори отваряне от WSL терминала и показване на Windows, имайки достъп до WSL файлове. За SSH с GitLab или други отдалечени устройства, настройте ключовете си в WSL и проверете разрешенията и SSH агентите преди клониране чрез SSH.

Запомнете съвета за ефективност: избягвайте /mnt/c за вашия код, ако ще компилирате или използвате интензивни Linux инструменти. Използвайте \\wsl$ от Windows, за да имате достъп до същата папка, когато имате нужда от нея.

Производителност на терминали: ZSH, Oh My Zsh, Powerlevel10k, Antigen, FZF и Tmux

За удобен и мощен терминал, инсталирайте ZSH с sudo apt install zsh и го променете на по подразбиране с chsh -s $(which zsh)След това инсталирайте О, мой zsh с официалния си скрипт и му придайте усъвършенстван външен вид и функционалност.

Темата Ниво на мощност 10k добавя лесно конфигурируема команда с Git интеграция и отлична производителност. Инсталирайте я от нейното хранилище, поставете ZSH_THEME="powerlevel10k/powerlevel10k" en ~/.zshrc и следвайте инструкциите на съветника, за да настроите шрифтовете и външния вид. Ще видите състоянието на вашето хранилище, клон и други погледни.

Con антиген Ще управлявате ZSH плъгините декларативно. Полезни пакети: zsh-autosuggestions, плъгин за fzf, поддържа zsh-npm-scripts-autocomplete y zsh-z за прескачане между директории. Добавете NVM като плъгин или официално за Версии на възли с горещо превключване.

Подобрява потока с НДНТ y fd от апартамент (bat y fd-find в Ubuntu) и конфигурирайте fzf за търсения: Ctrl + R за историята, Alt + C за папки и Ctrl + T за файлове с цветен преглед. Незабавни спестявания на време В ден за ден.

За да мултиплексирате терминала, използвайте tmux (sudo apt install tmux) и неговия мениджър на плъгини TPMС правилна настройка ще имате теми, възстановяване на сесии (resurrect/continuum), интеграция с Vim-подобна навигация и преки пътища към разделени панелиИнсталирайте плъгини с Ctrl + Espacio и след това I (главна буква i) в рамките на Tmux.

Бази данни, графични процесори и графични приложения

Вашият проект може да се нуждае от база данни. Имате ръководства за MySQL, PostgreSQL, MongoDB, Redis, SQL Server или SQLite работещи в WSL или като контейнери. Интегрирайте услуги в docker-compose.yml y Вземете вашия Dev Container онлайн за тях без усложнения.

Ускорение на графичния процесор? WSL2 предлага поддръжка за натоварвания на машинното обучение използвайки графичния процесор, със специален акцент върху NVIDIA и CUDA. При картите AMD/Intel има алтернативни пътища; проверете документацията на производителя за активиране на ускорение.

WSL2 ви позволява да стартирате Linux GUI приложения на Windows. За специфични случаи, Можете да отваряте Linux редактори или графични инструменти и ще се показва в прозорците на Windows. Ако видите проблеми, рестартирайте WSL2 с wsl --shutdown обикновено го оправя.

Взаимодействие и полезни команди

WSL и Windows се разбират добре. От PowerShell изпълнете Linux команди с wsl, например: wsl ls -laМожете също да смесвате: wsl ls -la | findstr "git" o dir | wsl grep git да филтрира между световете.

  Пълно ръководство за CMD команди в Windows: основни и разширени

От Linux стартирайте инструменти на Windows, като добавите . Exe: notepad.exe .bashrcСъщо полезни комбинации: ipconfig.exe | wsl grep IPv4 | wsl cut -d: -f2 да запази IP-то. Всичко тече между двете системи.

За да монтирате външни устройства в WSL2, следвайте ръководството за монтиране на дискове. Ще можете да достъп USB или допълнителни дискове и да работите с тях от Linux.

Мрежа, портове и локален хост

WSL2 картографира автоматично портовете на Linux средата към localhost в WindowsТоест, ако публикувате -p 3000:3000 В Docker можете да въведете http://localhost:3000 от вашия браузър в Windows, без да правите нищо друго.

Ако искате да предоставите WSL2 услуги на локалната мрежа (друго устройство във вашата мрежа), можете да използвате PowerShell скрипт който получава IP адреса на WSL и извиква netsh interface portproxy за пренасочване на портове, в допълнение към създаването на правило за защитната стена с New-NetFirewallRule. Това автоматизира публикуването и избягвайте ръчното повтаряне на стъпки след рестартиране.

Често срещани проблеми и как да ги решим

Остарели Docker контексти в WSL: Ако видите такъв с име „wsl“, наследен от по-стари прегледи, изтрийте го с docker context rm wslПо този начин ще избегнете грешки като open \\.\/pipe\/docker_wsl и ще останеш с него контекст по подразбиране.

Къде Docker съхранява данни под WSL? Търсене \\wsl$\docker-desktop y \\wsl$\docker-desktop-dataили отворете дистрибуцията си и я стартирайте explorer.exe . за навигация. Вие също имате \\wsl\<Distro>\mnt\wsl за да видите свързаното място за съхранение.

Проблеми с графичния интерфейс на прозореца, стартирани от WSL: понякога приложения базирано на артефакти от Electron Show. Рестартирайте WSL2 с wsl --shutdown и опитайте отново. Microsoft коригира тези данни с време.

Няма systemd? В последните версии, WSL2 може активиране на systemd по подразбиране; ако това не е вашият случай, можете да започнете услуги с /etc/wsl.conf и секцията [boot]Проверете вашата версия и документация, ако имате нужда от фонови услуги.

Надстроихте от WSL1 до WSL2 и Docker не сътрудничи: понякога има останки от стари конфигурации, като например DOCKER_HOST=tcp://localhost:2375Ако идвате от тази конфигурация, деинсталирайте Docker напълно на Windows и WSL (пакети, пътища и конфигурационни файлове) и преинсталирайте Docker Desktop с WSL 2 backendПроверете с wsl -l -v които съществуват docker-desktop y docker-desktop-data във версия 2.

Ако използвате нативния енджин в WSL2 без Desktop и излагате демона през TCP, не забравяйте, че без TLS е несигурноТази настройка е за локални среди за разработка, а не за производствени среди. Уверете се, че имате добър контрол върху мрежата си и избягвайте ненужни отворени портове.

Последни съвети и най-добри практики

В проекти с docker-compose.yml които предполагат автоматизации на Docker Desktop (монтиране и мрежови псевдоними), коригирайте абсолютните пътища, ако видите обеми с ~ и добавя extra_hosts с host.docker.internal:host-gateway ако вашият стек го изисква. Малките промени избягват изненади.

За VS Code, комбинацията WSL + Dev Containers + Docker ви позволява работа вътре в контейнера със същите разширения и настройки на редактора. Това е начин за стандартизиране на средата между членовете на екипа и намаляване на фактора „работи на моята машина“.

Ако предпочитате подход без Docker Desktop, вграденият енджин в WSL2 предлага гранулиран контрол и, с Portainer, лек интерфейс за управление. И двата маршрута са валидни и ще зависи от вашите нужди, лицензи и вътрешни политики.

Имате пълна карта: Инсталиране и конфигуриране на WSL2, изберете между Docker Desktop или native engine, работете с Контейнери за разработка и VS код, използвайте бази данни и графичен процесор, и повишете производителността си с настроен терминал и Tmux. Ключът е да комбинирате тези части според вашия проект и екип, за да постигнете възпроизводима, бърза и комфортна среда В ден за ден.