Прежде чем установить Docker Desktop, необходимо выбрать один из готовых протоколов — WSL 2 и Hyper-V. Каждый из них имеет свои особенности, и в зависимости от выбора определяется пул системных требований. Разберёмся, что подходит именно вам, и пройдём весь путь, вплоть до активированного контейнера и настраиваемого окружения так, чтобы работать было удобно.
Зачем вообще нужен Docker Desktop под Windows
Представьте ситуацию: вы собрали приложение, и на вашем компьютере оно работает идеально. Затем передаёте его коллегам — а у них другая версия Python, другие библиотеки, другая операционная система. Всё ломается. Docker решает эту проблему: он упаковывает приложение вместе со всем, что ему нужно, в контейнер — изолированную среду, которая одинаково работает везде.
Но есть нюанс. Docker создан для Linux. Контейнеры используют механизмы Linux-ядра — пространства имён для изоляции процессов и контрольные группы для управления ресурсами. На Windows ничего из этого нет. Поэтому просто взять и установить Docker Engine в Windows, как обычную программу, не получится.
Здесь и понадобится Docker Desktop. Это приложение разворачивает внутри Windows легковесную виртуальную машину с Linux, а уже в ней запускает Docker Engine. Снаружи вы этого почти не замечаете — работа идёт через привычную командную строку или графический интерфейс, но на самом деле в этот момент происходит всякая «магия» с виртуализацией.
Docker Desktop включает в себя Docker Engine (собственный движок для контейнеров), Docker CLI (команды в терминале), Docker Compose (инструмент для запуска многоконтейнерных приложений) и графическую оболочку для управления образами, контейнерами и томами. По сути, это «всё в одном» для разработчика, чтобы использовать контейнеры на Windows.
Какой путь выбрать: WSL 2 или Hyper-V
Прежде чем скачать установщик, стоит определиться с бэкендом виртуализации. Docker Desktop предлагает два варианта, в зависимости от требований системы, производительности и доступных типов контейнеров.
WSL 2 (Подсистема Windows для Linux 2) — подсистема, которая запускает настоящее Linux-ядро внутри Windows. Это не эмуляция и не прослойка-переводчик между системными вызовами, как было в первой версии WSL. Это полноценный Linux, который динамически делит ресурсы с Windows: если контейнерам нужно 2 ГБ памяти — WSL возьмёт 2 ГБ, а не зарезервирует 8 заранее.
Hyper-V — встроенный гипервизор Microsoft, создающий полноценную виртуальную машину с выделенными ресурсами. Более тяжеловесный вариант, но с жёсткой изоляцией и поддержкой Windows-контейнеров.
Вот простой алгоритм выбора:
- У вас Windows Home → только WSL 2. Hyper-V в домашней редакции недоступен.
- Нужны Windows-контейнеры (ASP.NET Framework, IIS, Windows-сервисы) → Hyper-V. WSL 2 запускает только Linux-контейнеры.
- Установлена старая версия VirtualBox или VMware → WSL 2 будет безопаснее. Hyper-V может конфликтовать со сторонними гипервизорами, хотя в последних версиях VirtualBox (6.0+) и VMware Workstation (15.5.5+) совместимость улучшена.
- Важна корпоративная безопасность и строгая изоляция → Hyper-V. Виртуальная машина полностью отделена от хост-системы.
- Во всех остальных случаях → WSL 2. Быстрее, легче, потребляет меньше ресурсов, рекомендуется самим Docker.
Краткая сводка:
| Критерий | WSL 2 | Hyper-V |
|---|---|---|
| Производительность | Высокая, динамическое выделение ресурсов | Ниже, фиксированные ресурсы ВМ |
| Типы контейнеров | Только Linux | Linux и Windows |
| Редакция Windows | Все, включая Home | Профессиональная, Enterprise, Education |
| Изоляция | Относительная | Строгая |
| Сторонние гипервизоры | Не конфликтуют | Возможные конфликты |
Что нужно проверить перед установкой
Независимо от выбора бэкенда, есть общий контрольный список. Пройдите по нему перед установкой — сэкономите время на отладке.
Версия и редакция Windows. Нужна 64-битная Windows 10 версии 22H2 (сборка 19045) или новее, либо Windows 11 версии 23H2 (сборка 22631) или новее. Редакции Enterprise, Pro и Education поддерживают оба бэкенда. Редакция Home — только WSL 2. Посмотреть свою версию можно командой winver в строке поиска Windows.
Аппаратная виртуализация. Без неё не запустится ни WSL 2, ни Hyper-V. Проверьте, не перезагружаясь: откройте «Диспетчер задач» (Ctrl+Shift+Esc), перейдите на вкладку «Производительность», выберите «ЦП». В нижней части окна найдите надпись «Виртуализация». Если написано «Включено» — всё хорошо. Если «Отключено» — нужно зайти в BIOS/UEFI и активировать эту опцию. В зависимости от производителя она может называться Intel VT-x, Intel Virtualization Technology, AMD-V или SVM Mode.
Оперативная память. Минимум — 4 ГБ. Для комфортной работы с контейнерами лучше иметь 8 ГБ и более.
Процессор. 64-битный, с поддержкой SLAT (трансляция адресов второго уровня). Все процессоры Intel и AMD, выпущенные примерно после 2010 года, имеют SLAT.
Дополнительно для WSL 2: версия WSL 2.1.5 или новее. Проверить можно командой wsl --version в PowerShell. Если не распознаётся или версия ниже требуемой — не страшно, мы обновим WSL в процессе установки.
Дополнительно для Hyper-V: компоненты Hyper-V и контейнеры должны быть включены. Если они не включены — тоже не беда, ниже покажем, как это сделать.
Путь первый: установка через WSL 2
Это рекомендуемый путь. Пройдём его от чистой системы до рабочего контейнера за один заход.
Шаг 1. Установка WSL 2
Откройте PowerShell от имени администратора (правой кнопкой по кнопке «Пуск» → «Терминал (Администратор)» или «Windows PowerShell (Администратор)») и выполните:
wsl --install
Эта команда делает сразу несколько вещей: включает компонент WSL и виртуальную платформу, загружает и устанавливает ядро Linux, задаёт WSL 2 в качестве версии по умолчанию и устанавливает дистрибутив Ubuntu. После выполнения перезагрузите компьютер.
Если WSL у вас уже стоит, но вы не уверены в версии, выполните:
wsl --version
Нужна версия 2.1.5 или выше. Для обновления:
wsl --update
Шаг 2. Первичная настройка Linux-дистрибутива
После перезагрузки запустите Ubuntu через меню «Пуск». При первом запуске система запросит ввод имени пользователя и пароля. Они существуют только внутри Linux-среды и не влияют на учётную запись Windows. Запомните пароль — он понадобится для команд с sudo.
Шаг 3. Установка Docker Desktop
Загрузите установщик с официального сайта Docker (раздел Docker Desktop для Windows). Запустите файл Docker Desktop Installer.exe. В окне конфигурации убедитесь, что опция «Использовать WSL 2 вместо Hyper-V» включена — при выборе бэкенда WSL 2 она должна быть отмечена. Дождитесь окончания установки.
После установки выполните перезаход в учётную запись Windows (не обязательно перезагружать компьютер — достаточно выйти и войти обратно).
Шаг 4. Первый запуск Docker Desktop
Откройте Docker Desktop из меню «Пуск». При первом запуске приложение запросит принять условия лицензионного соглашения. После этого Docker Engine начнёт инициализацию — в системном трее появится иконка с китом. Когда анимация прекратится, Docker готов к работе.
Шаг 5. Проверка
Откройте PowerShell и выполните:
docker run hello-world
Docker скачает тестовый образ из Docker Hub и запустит контейнер. Если вы увидите приветственное сообщение с объяснением того, что произошло, — всё настроено правильно. Путь от чистой системы до рабочего контейнера пройден.
Путь второй: установка через Hyper-V
Этот путь подходит для пользователей Windows Pro, Enterprise или Education, которым нужны Windows-контейнеры или строгая изоляция.
Шаг 1. Включение Hyper-V
Откройте PowerShell от имени администратора и выполните:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Команда устанавливает все компоненты Hyper-V. После выполнения потребуется перезагрузка.
Убедитесь, что всё встало правильно:
Get-WindowsOptionalFeature -Online -FeatureName *hyper*
У всех компонентов Hyper-V в столбце State должно быть значение Enabled.
Альтернативный способ — через графический интерфейс: «Панель управления» → «Программы» → «Включение или отключение компонентов Windows». Выберите Hyper-V, поставьте галочку, нажмите «ОК», перезагрузитесь.
Шаг 2. Установка Docker Desktop
Скачайте тот же установщик с сайта Docker. Запустите его, но на этот раз отключите галочку «Использовать WSL 2 вместо Hyper-V». Дождитесь окончания установки и перезайдите в учётную запись.
Шаг 3. Первый запуск и проверка
Запустите Docker Desktop, примите лицензионное соглашение, дождитесь иконки в трее. Проверьте:
docker run hello-world
Если всё пройдёт успешно — контейнер запустится и выведет приветственное сообщение.
Переключение на Windows-контейнеры
По умолчанию Docker Desktop работает с Linux-контейнерами. Чтобы переключиться на Windows-контейнеры, нажмите правую кнопку на иконку Docker в системном трее и выберите «Switch to Windows containers». Учтите, что Windows-контейнеры доступны только при бэкенде Hyper-V и только на редакциях Pro, Enterprise и Education.
Первые шаги после установки: настраиваем сразу
Docker работает, контейнер запустился — но до комфортной рабочей среды ещё пара шагов. Вот что стоит сделать сразу.
Добавление в группу docker-пользователей. Если Docker Desktop устанавливал администратор, а вы работаете под обычной учётной записью, некоторые команды могут требовать прав. Администратор должен добавить вас в группу docker-users:
net localgroup docker-users <ваше_имя_пользователя> /add
После этого выйдите из учётной записи и войдите снова.
Интеграция с WSL-дистрибутивами. Если вы используете WSL 2 и у вас установлено несколько дистрибутивов (например, Ubuntu и Debian), Docker Desktop по умолчанию может быть интегрирован не со всеми. Перейдите в Настройки → Resources → WSL Integration и включите интеграцию для тех дистрибутивов, из которых планируете управлять Docker.
Автозапуск. Если вы работаете с Docker ежедневно, имеет смысл включить автоматический запуск. Перейдите в «Настройки» → «General» и активируйте «Start Docker Desktop when you log in». Docker будет запускаться при входе в Windows.
Ограничение ресурсов для WSL 2. По умолчанию WSL 2 может потреблять до 50% оперативной памяти и все доступные ядра процессора. На машине с 16 ГБ ОЗУ — 8 ГБ для WSL — иногда многовато, иногда маловато. Настроить лимиты можно через файл .wslconfig.
Откройте Проводник, перейдите в папку C:\Users\<ваше_имя> (или введите %UserProfile% в адресной строке). Создайте файл с именем .wslconfig (если его ещё нет). Важно: файл должен называться именно так, с точкой в начале и без расширения .txt. Откройте его в текстовом редакторе и пропишите секции:
[wsl2]
memory=4GB
processors=2
swap=2GB
Подставьте свои значения. На машине с 16 ГБ оперативной памяти WSL можно выделить 8 ГБ. На машине с 8 ГБ — лучше выделить 3–4 ГБ, чтобы осталось место для самой Windows. После сохранения файла выполните в PowerShell:
wsl --shutdown
При следующем запуске WSL будет использовать новые настройки.
Настройка рабочего окружения
Docker установлен, ресурсы настроены. Теперь превратим всё это в удобную среду для разработки.
VS Code и расширения. Visual Studio Code — самый популярный редактор для работы с Docker на Windows. Три расширения, которые стоит поставить:
- WSL (от Microsoft) — позволяет открывать проекты внутри файловой системы WSL напрямую из VS Code.
- Dev Containers (от Microsoft) — даёт возможность открыть проект внутри Docker-контейнера. VS Code подключается к контейнеру, и вся разработка (включая терминал, отладку, расширения) происходит в изолированной среде.
- Docker (от Microsoft) — добавляет в боковую панель VS Code обзор контейнеров, образов, томов и сетей. Оттуда же можно запускать, останавливать и удалять контейнеры.
Типичный рабочий процесс: открываете VS Code, подключаетесь к WSL-дистрибутиву через расширение WSL, открываете папку с проектом, а затем через Dev Containers: Reopen in Container переносите среду разработки в собственный контейнер. Всё необходимое для разработки хранится в контейнере, а ваша основная система остаётся чистой.
Терминал Windows. Если вы ещё не перешли на Терминал Windows — самое время. Это приложение от Microsoft, которое объединяет PowerShell, cmd, WSL-дистрибутивы и любые другие терминалы в одном окне с вкладками. Установить его можно через Microsoft Store.
В терминале Windows можно добавить отдельный профиль для Ubuntu (или другого WSL-дистрибутива) и запускать Docker-команды где угодно. Удобно, когда нужно быстро переключаться между PowerShell на хосте и Linux-терминалом в WSL.
Docker Compose — проверка боем. Чтобы убедиться, что работают не только одиночные контейнеры, но и многоконтейнерные приложения, проведите простой тест. Создайте файл docker-compose.yml:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: example
Затем выполните из того же каталога:
docker compose up -d
Docker скачает образы Nginx и PostgreSQL, создаст два контейнера и свяжет их в одну сеть. Откройте браузер http://localhost:8080 — вы должны увидеть стандартную страницу Nginx. Это значит, что Docker Compose работает, сеть между контейнерами настроена, а проброс портов работает.
Чтобы остановить и удалить контейнеры:
docker compose down
Оптимизация производительности
Docker на Windows работает через виртуализацию, и это неизбежно влечёт накладные расходы. Но их можно сократить.
Храните проекты внутри WSL, а не на диске Windows. Это самый важный совет. Когда проект лежит, например, в /mnt/c/Users/dev/projects/, каждое обращение к файлу проходит через трансляцию между файловой системой Windows (NTFS) и Linux. Это работает в несколько раз медленнее, чем доступ к файлам внутри WSL. Перенесите код в домашний каталог WSL (~/projects/) и заметите разницу — особенно на операциях с большим количеством файлов, например, npm install или git status.
Не давайте WSL съесть всю память. Процесс Vmmem в Диспетчере задач — это ваш WSL. По умолчанию он может занять половину оперативной памяти и не всегда возвращает её обратно Windows. Файл .wslconfig (о нём мы говорили выше) решает эту задачу: задайте разумный лимит памяти, и Windows не будет задыхаться рядом с Docker.
Регулярно чистите неиспользуемые ресурсы. Со временем накапливаются остановленные контейнеры, промежуточные образы и неиспользуемые тома. Всё это занимает место на диске. Одна команда наводит порядок:
docker system prune -a
Флаг -a удаляет в том числе образы, которые не использовались ни в одном контейнере. Будьте осторожны: если у вас есть образы, которые вы загружали вручную и планируете использовать, их придётся скачивать заново.
Используйте функцию экономии ресурсов в Docker Desktop. В настройках Docker Desktop есть режим Resource Saver. Когда контейнеры не запущены, Docker автоматически снижает потребление ресурсов. Этот режим включён по умолчанию, но убедитесь, что он не был отключён: Настройки → Resources → Resource Saver.
Что делать, если что-то пошло не так
Типичные проблемы при установке и работе с Docker на Windows — и что с ними делать.
Установил Docker Desktop, но он не запускается. Пишет про виртуализацию.
Значит, аппаратная виртуализация отключена в BIOS/UEFI. Перезагрузите компьютер, зайдите в BIOS (обычно клавиши Del, F2 или F12 при включении — зависит от производителя), найдите опцию Intel VT-x, Intel Virtualization Technology, AMD-V или SVM Mode, включите её, сохраните и перезагрузитесь.
В терминале WSL команда docker не найдена.
Docker Desktop установлен, но не интегрирован с вашим WSL-дистрибутивом. Откройте Docker Desktop → Настройки → Resources → WSL Integration. Убедитесь, что переключатель напротив вашего дистрибутива включён. После этого закройте и снова откройте терминал WSL.
Установка WSL не завершилась или версия WSL слишком старая.
Выполните в PowerShell от имени администратора:
wsl --update
Перезагрузите компьютер. Если не помогло и доступ к Microsoft Store ограничен, скачайте MSI-пакет с GitHub-страницы релизов WSL (github.com/microsoft/WSL/releases) и установите вручную.
Docker запустился, контейнер работает, но порт не отвечает из браузера.
Три вещи для проверки. Первое: убедитесь, что при запуске контейнера вы пробросили порт (флаг -p, например -p 8080:80). Второе: проверьте, не занят ли этот порт другим приложением (в PowerShell: netstat -ano | findstr :8080). Третье: брандмауэр Windows может блокировать подключение — временно отключите его для диагностики.
Всё жутко тормозит.
Скорее всего, файлы проекта лежат на стороне Windows (/mnt/c/...), а не внутри WSL. Перенесите их в ~/projects. Если тормозит сама Windows — проверьте в Диспетчере задач, сколько памяти потребляет процесс Vmmem. Ограничьте потребление через .wslconfig, как указано выше.
Hyper-V конфликтует с VirtualBox или VMware.
Обновите VirtualBox до версии 6.0 или выше, VMware Workstation — до 15.5.5 или выше. В этих версиях добавлена совместимость с Hyper-V. Если обновление невозможно, переключите Docker Desktop на бэкенд WSL 2 — он не конфликтует со сторонними гипервизорами.