- WSL2 предлага ядро Linux местен в Windows и страхотна производителност за Docker.
- VS Code и Dev Containers осигуряват възпроизводими и преносими среди.
- Инсталирайте Docker Desktop или нативния енджин на WSL2 въз основа на вашите правила.
- Производителност: ZSH, FZF и Tmux, плюс отстраняване на проблеми с WSL2/Docker.
Ако работите с 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 upgrade
Windows не актуализира автоматично дистрибуцията, така че ти решаваш когаАко искате да добавите още дистрибуции, можете да го направите от 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.
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
да филтрира между световете.
От 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. Ключът е да комбинирате тези части според вашия проект и екип, за да постигнете възпроизводима, бърза и комфортна среда В ден за ден.
Страстен писател за света на байтовете и технологиите като цяло. Обичам да споделям знанията си чрез писане и това е, което ще направя в този блог, ще ви покажа всички най-интересни неща за джаджи, софтуер, хардуер, технологични тенденции и много други. Моята цел е да ви помогна да се ориентирате в дигиталния свят по лесен и забавен начин.