Разработчик запускает команду docker в Windows, а контейнер стартует внутри настоящего ядра Linux — именно так работает WSL2, и именно эта особенность отличает его от обычной эмуляции терминала. WSL2 (Windows Subsystem for Linux 2) — это вторая версия подсистемы Windows для Linux, которая позволяет запускать полноценные дистрибутивы Linux прямо внутри Windows без двойной загрузки и без классической виртуальной машины с ручной настройкой.
Технология разработана Microsoft и встроена в современные версии Windows 10 и Windows 11. В отличие от первой версии WSL, которая лишь транслировала системные вызовы Linux в вызовы Windows, вторая версия использует настоящее ядро Linux, работающее внутри легковесной виртуальной машины на базе Hyper-V. Это даёт полную совместимость с Linux-приложениями и заметно более высокую производительность при работе с файловой системой.
Как устроена WSL2 изнутри
В основе WSL2 лежит легковесная виртуальная машина, которая запускается средствами гипервизора Hyper-V. Внутри неё работает специально оптимизированное ядро Linux, которое Microsoft собирает и обновляет через стандартный механизм Windows Update. Пользователю не нужно ничего компилировать или настраивать вручную — ядро обновляется автоматически вместе с системой.
Дистрибутивы Linux (Ubuntu, Debian, Kali и другие из Microsoft Store) устанавливаются поверх этой виртуальной среды. Каждый дистрибутив получает собственное изолированное окружение, но все они используют общее ядро. Благодаря этому запуск занимает секунды, а потребление оперативной памяти динамически подстраивается под нагрузку.
Обмен файлами между Windows и Linux реализован через сетевой протокол: файлы Windows доступны в Linux по пути /mnt/c, а файловая система Linux видна в Проводнике Windows через адрес \\wsl$. Это удобно, но есть нюанс с производительностью, о котором поговорим ниже.
Чем WSL2 отличается от WSL1
Первая версия подсистемы работала иначе: она переводила системные вызовы Linux в эквивалентные вызовы ядра Windows. Такой подход не требовал виртуализации, но имел серьёзные ограничения — часть программ просто не запускалась, а поддержка Docker отсутствовала. WSL2 решает эти проблемы за счёт настоящего ядра.
| Критерий | WSL1 | WSL2 |
|---|---|---|
| Ядро Linux | Нет, трансляция вызовов | Настоящее ядро в ВМ |
| Совместимость приложений | Частичная | Полная |
| Поддержка Docker | Нет | Да |
| Скорость работы с файлами Linux | Низкая | Высокая |
| Скорость доступа к файлам Windows | Высокая | Ниже, чем в WSL1 |
Парадокс в том, что WSL1 до сих пор может быть быстрее в одном сценарии — при интенсивной работе с файлами, расположенными на стороне Windows. Если проект лежит в C:\Projects, а вы обращаетесь к нему из Linux через /mnt/c, вторая версия будет медленнее из-за накладных расходов на сетевой протокол. Поэтому рекомендуется хранить проекты внутри файловой системы Linux.
Для чего используется WSL2 на практике
Основная аудитория технологии — разработчики, которым нужны Linux-инструменты без отказа от Windows. Но круг применения шире.
- 🐳 Запуск Docker-контейнеров — Docker Desktop для Windows использует WSL2 как основной бэкенд
- 🛠️ Веб-разработка — Node.js, Python, Ruby и другие стеки работают в «родной» среде
- 📦 Сборка кроссплатформенных проектов — компиляция и тестирование под Linux без отдельного сервера
- 🔐 Работа с CLI-инструментами — ssh, grep, awk, curl и весь арсенал консольных утилит
- 🎓 Изучение Linux — безопасная песочница, которую легко удалить и переустановить
Отдельно стоит упомянуть интеграцию с Visual Studio Code: расширение Remote — WSL позволяет редактировать код в Windows, а выполнять его внутри Linux-окружения. Серверная часть редактора запускается в дистрибутиве автоматически.
Можно ли запускать графические Linux-приложения?
Да, в Windows 11 и актуальных сборках Windows 10 доступна функция WSLg — она позволяет запускать Linux-приложения с графическим интерфейсом, включая окна, звук и аппаратное ускорение GPU. Приложение просто устанавливается внутри дистрибутива и появляется в меню «Пуск» Windows.
Как установить WSL2: пошаговая инструкция
Начиная с актуальных версий Windows 10 (сборка 2004 и новее) и в Windows 11 установка сводится к одной команде. Откройте PowerShell или Терминал Windows от имени администратора и выполните:
wsl --install
Команда автоматически включает необходимые компоненты (платформу виртуальной машины и подсистему Linux), скачивает ядро и устанавливает Ubuntu как дистрибутив по умолчанию. После завершения потребуется перезагрузка компьютера, а при первом запуске дистрибутива — создание имени пользователя и пароля для Linux.
☑️ Проверка перед установкой WSL2
⚠️ Внимание: если виртуализация отключена на уровне BIOS/UEFI, WSL2 не запустится и выдаст ошибку. Название пункта включения зависит от производителя материнской платы — ищите параметры вроде Intel VT-x, SVM Mode или AMD-V в разделе настроек процессора. Точное расположение сверьте с документацией вашей платы или ноутбука.
Чтобы установить другой дистрибутив, сначала посмотрите список доступных:
wsl --list --online
Затем установите нужный, указав его имя:
wsl --install -d Debian
Типичные проблемы и их решения
Чаще всего пользователи сталкиваются с ошибкой о том, что виртуальная машина не может быть запущена. Возможная причина — отключённый компонент «Платформа виртуальной машины» или выключенная виртуализация в BIOS. Проверьте оба пункта до переустановки системы.
Вторая распространённая ситуация — WSL2 со временем начинает потреблять много оперативной памяти. Процесс vmmem в Диспетчере задач может занимать значительный объём, потому что Linux кэширует файловые операции и не спешит возвращать память Windows. Ограничить потребление можно через файл конфигурации .wslconfig в домашней папке пользователя Windows, задав параметры memory и processors.
[wsl2]
memory=4GB
processors=4
⚠️ Внимание: после изменения файла
.wslconfigнастройки применятся только после полного завершения работы подсистемы. Выполнитеwsl --shutdownв PowerShell и запустите дистрибутив заново — иначе лимиты не подействуют.
Третья категория проблем — сетевые. WSL2 получает собственный виртуальный сетевой адаптер с NAT, поэтому IP-адрес Linux-окружения отличается от адреса Windows. Возможная причина недоступности сервиса, запущенного внутри WSL, с других устройств в локальной сети — именно эта изоляция. Для доступа с самой машины обычно достаточно обращения к localhost, но проброс портов наружу требует дополнительной настройки.
Ограничения и особенности, о которых стоит знать
Несмотря на полную совместимость с ядром, WSL2 — не полная замена физической Linux-машины. Поддержка systemd появилась относительно недавно и включается вручную через файл /etc/wsl.conf внутри дистрибутива; в старых установках её может не быть по умолчанию. Часть низкоуровневых сценариев — например, прямой доступ к USB-устройствам — требует дополнительных инструментов вроде usbipd-win.
Также учитывайте, что файловая система дистрибутива хранится в виртуальном диске VHDX, который растёт автоматически, но сам не уменьшается после удаления файлов. Если диск разросся, его нужно сжимать вручную средствами Hyper-V или через diskpart — это одна из тех деталей, о которых узнают только тогда, когда на диске заканчивается место.
⚠️ Внимание: не редактируйте файлы Linux-окружения через путь
\\wsl$программами, которые могут повредить права доступа и метаданные. Для правки кода используйте редакторы с официальной поддержкой WSL, например VS Code с расширением Remote — WSL.
Часто задаваемые вопросы
Чем WSL2 отличается от обычной виртуальной машины VirtualBox или VMware?
WSL2 стартует за секунды, автоматически интегрируется с файловой системой и сетью Windows, не требует ручной настройки виртуального оборудования и динамически управляет памятью. Классическая ВМ даёт больше контроля и полную изоляцию, но требует больше ресурсов и настройки.
Работает ли WSL2 на Windows 10 Домашней?
Да. Хотя полноценный Hyper-V недоступен в домашней редакции, WSL2 использует отдельный компонент «Платформа виртуальной машины», который доступен и в Windows 10/11 Домашней.
Можно ли запускать Docker в WSL2 без Docker Desktop?
Да, Docker Engine можно установить непосредственно внутри дистрибутива Linux по стандартной инструкции для выбранного дистрибутива. Docker Desktop при этом не обязателен, хотя он упрощает интеграцию с Windows.
Как полностью удалить WSL2 с компьютера?
Сначала удалите дистрибутивы командой wsl --unregister ИмяДистрибутива, затем отключите компоненты «Подсистема Windows для Linux» и «Платформа виртуальной машины» в разделе «Компоненты Windows» панели управления и перезагрузите компьютер.
Почему WSL2 медленно работает с файлами на диске C:?
Доступ из Linux к файлам Windows идёт через сетевой протокол, что замедляет операции с большим количеством мелких файлов. Решение — хранить проекты внутри файловой системы Linux (например, в домашней папке ~/projects) и обращаться к ним из Windows через \\wsl$.