Один из авторов XDA запустил свою домашнюю лабораторию на контейнерах WSL в течение недели и обнаружил, что “немного” сломалось. Это честная оценка: WSL 2 повзрослел, Docker Desktop стал тяжелее, и многая работа с домашней лабораторией теперь отлично работает внутри Linux-дистрибутива на Windows без налога VM для Docker Desktop. Это лучшие приложения для миграции контейнеров WSL с Docker на рабочий стол — инструменты, которые позволяют машине Windows размещать контейнеры без платной лицензии на место или загрузки второй VM для запуска демона.
Мы тестировали семь инструментов внутри WSL 2 на Windows 11 24H2 с ноутбуком AMD Ryzen и рабочей станцией Nvidia. Каждый выбор устанавливается в стандартный образ Ubuntu 24.04 или Debian 12 WSL, пережидает перезагрузку Windows и либо полностью заменяет Docker CLI, либо встраивается в него. Различия проявляются в передаче GPU, поддержке systemd и том, как каждый инструмент обрабатывает границу файловой системы Windows-Linux, которая приводит к сбоям большинства миграций.
На что обратить внимание в стеке контейнеров WSL
- WSL 2 с включенным systemd. Современные инструменты контейнеризации требуют systemd в качестве pid 1.
- Rootless где возможно. Никакого демона, работающего от root внутри дистрибутива.
- Доступ к GPU. Nvidia CDI или путь CUDA-on-WSL, чтобы обучение и вывод работали.
- Постоянные тома на стороне Linux. Привязки монтирования остаются в файловой системе ext4, а не в
/mnt/c. - Совместимость с Docker-CLI. Существующие команды
dockerиdocker composeпродолжают работать во время миграции. - Автозагрузка при входе в Windows. Task Scheduler или запись автозагрузки WSL поддерживает сервисы в рабочем состоянии без ручного
wsl -d.
Быстрое сравнение
| Приложение | Лучше всего для | Платформы | Бесплатный план | Платный тариф | Рейтинг |
|---|---|---|---|---|---|
| WSL 2 | Слой дистрибутива, на котором сидит все остальное | Windows 10, 11 | Полностью бесплатно | Нет | 4.8 |
| Podman | Замена Docker CLI без демона | Ubuntu, Debian, Fedora в WSL | Полностью бесплатно | Podman Desktop, бесплатный | 4.7 |
| Rancher Desktop | Управляемый Docker-совместимый стек | Windows | Полностью бесплатно | Нет | 4.6 |
| Distrobox | Несколько Linux-дистрибутивов рядом | Любой WSL-дистрибутив | Полностью бесплатно | Нет | 4.7 |
| systemd-nspawn | Легкие OS-контейнеры встроены в systemd | WSL с systemd | Полностью бесплатно | Нет | 4.5 |
| nerdctl | CLI containerd с Docker-совместимостью | Ubuntu, Debian, Fedora в WSL | Полностью бесплатно | Нет | 4.7 |
| Lima | Linux VM из файла конфигурации для портативности | Windows через WSL, macOS, Linux | Полностью бесплатно | Нет | 4.7 |
Приложения
1. WSL 2 для контейнеров — Лучший слой дистрибутива
WSL 2 — это основа, которая превращает Windows в жизнеспособный хост для контейнеров. С включенным флагом systemd в /etc/wsl.conf, установка Ubuntu или Debian загружается с реальным init, что разблокирует Podman, nerdctl и все остальное в этом списке. Лимит памяти на стороне Windows в .wslconfig предотвращает выход контейнеров из-под контроля, а режим сетей в последних версиях исключает танец с портами localhost.
Где это дает сбой: Кроссфайловая I/O медленна. Держите данные контейнеров на стороне Linux ext4, а не в /mnt/c/Users/..., иначе compose, который занял 2 секунды на Docker Desktop, займет 40 здесь.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет.
Платформы: Windows 10 21H2 и позже, Windows 11.
Загрузка: learn.microsoft.com/windows/wsl · github.com/microsoft/WSL
Вывод: Включите systemd сначала, затем выберите инструмент контейнеризации. Все ниже предполагает этот шаг.
2. Podman для WSL — Лучший Docker CLI без демона
Podman поставляется с Docker-совместимым CLI, podman-compose для файлов compose, и работает без root. Внутри образа WSL Ubuntu выполните dnf или apt install podman и alias docker=podman, и большинство миграции займет один день. Примитив pod Podman лучше отображается на Kubernetes, чем Docker compose, что делает переход к реальному оркестратору менее переписыванием.
Где это дает сбой: Некоторые файлы compose используют Docker-специфический синтаксис, который podman-compose обрабатывает несовершенно. Podman Compose v2 исправляет большинство; граничные случаи остаются.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет. Podman Desktop тоже бесплатен.
Платформы: Ubuntu, Debian, Fedora и другие дистрибутивы внутри WSL.
Загрузка: podman.io · github.com/containers/podman
Вывод: Правильный выбор для всех, кто уходит от Docker Desktop из-за его лицензии или размера.
3. Rancher Desktop на WSL — Лучший управляемый Docker-совместимый стек
Rancher Desktop обертывает containerd и Moby в установщик Windows, использует WSL под капотом и предоставляет UI для образов и Kubernetes. Он также раскрывает бинарные файлы docker и docker compose с выбранным вами двигателем контейнеров. Это самый гладкий Docker Desktop при замене, когда остальная команда по-прежнему ожидает, что docker просто работает.
Где это дает сбой: Бюджет RAM выше, чем у raw Podman внутри WSL, потому что Rancher Desktop запускает свою собственную структуру utility VM поверх WSL-дистрибутива.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет.
Платформы: Windows 10, 11 (backend WSL 2).
Загрузка: rancherdesktop.io · github.com/rancher-sandbox/rancher-desktop
Вывод: Выберите Rancher Desktop, когда команда хочет замену Docker Desktop, а не полный переосмысл рабочего процесса.
4. Distrobox на WSL — Лучший для нескольких дистрибутивов рядом
Distrobox создает и управляет контейнерами, которые содержат полные дистрибутивы и интегрируются с хост-образом WSL, так что проект, требующий инструментов Fedora, и тот, который требует Ubuntu 20.04, оба живут на одной машине. В WSL это превращает один WSL-дистрибутив в средство запуска для небольшого набора специально созданных окружений, и каждое имеет свои собственные инструменты контейнеризации, доступ к GPU и менеджер пакетов.
Где это дает сбой: Не является заменой Docker сам по себе. Он находится рядом с Podman или nerdctl и решает проблему “мне нужно соответствующее окружение сборки”.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет.
Платформы: Любой WSL-дистрибутив с Podman или Docker.
Загрузка: distrobox.it · github.com/89luca89/distrobox
Вывод: Добавляет паттерн “много дистрибутивов на одном Windows-боксе” без раскручивания отдельных образов WSL.
5. systemd-nspawn на WSL — Лучшие легкие OS-контейнеры
systemd-nspawn — это то, что systemd сам поставляет для OS-контейнеров. Это не полная замена Docker, но это самый легкий способ запустить дистрибутив-песочницу внутри WSL без другого демона. Устаревшие рабочие нагрузки, ожидающие полного init, cron и systemd-шины, ведут себя внутри nspawn лучше, чем в отъединенном OCI-контейнере.
Где это дает сбой: Нет истории реестра образов. Вы приносите свою собственную корневую файловую систему, обычно debootstrap.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет.
Платформы: WSL-дистрибутивы с включенным systemd.
Загрузка: freedesktop.org/wiki/Software/systemd · systemd/systemd на GitHub
Вывод: Контейнер для рабочей нагрузки, которая претендует быть целым Linux-сервером.
6. nerdctl на WSL — Лучший containerd-native CLI
nerdctl — это Docker-совместимый CLI от проекта containerd, и он достаточно близок к docker, чтобы скрипты не заметили подмену. Внутри WSL он хорошо сочетается с containerd, установленным прямо из релиза containerd, без Docker или Podman в картине. Это сочетание — самый скудный способ запустить OCI-контейнеры на Windows без Docker Desktop VM.
Где это дает сбой: Buildkit для построения образов требует одного дополнительного шага. После настройки nerdctl build ведет себя.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет.
Платформы: Ubuntu, Debian, Fedora в WSL.
Загрузка: github.com/containerd/nerdctl · containerd.io
Вывод: Правильный инструмент, если вы знаете, что ваши рабочие нагрузки работают на containerd в любом случае и вам не нужны extras Docker.
7. Lima на WSL — Лучшие VM-как-конфиг для портативности
Lima описывает Linux VM в файле YAML и запускает их одинаково на macOS, Linux и Windows через WSL. Это инструмент, который держит “хост контейнеров” воспроизводимым даже когда ноутбук разработчика переключается между платформами. Команда может поделиться конфигом Lima и все получат одинаковую установку containerd или Docker независимо от OS.
Где это дает сбой: Lima на Windows все еще полагается на WSL как на движок VM, поэтому базовые лимиты памяти WSL и сетей применяются.
Цены:
- Бесплатно: Полностью бесплатно.
- Платно: Нет.
Платформы: Windows (через WSL 2), macOS, Linux.
Загрузка: lima-vm.io · github.com/lima-vm/lima
Вывод: Используйте Lima, когда файл конфигурации важнее, чем конкретный движок контейнеров.
Как выбрать правильный
- Если вы хотите наименее инвазивную миграцию: Rancher Desktop, сохраните CLI
docker, поменяйте движок позади. - Если вам нужно без демона и без вопроса лицензии: Podman внутри systemd-включенного WSL Ubuntu.
- Если вам нужны несколько дистрибутивов на одном Windows-боксе: Distrobox поверх Podman.
- Если рабочая нагрузка хочет полной OS с init: systemd-nspawn внутри WSL.
- Если команда использует macOS, Linux и Windows: Lima с общей конфигурацией YAML.
FAQ
Могу ли я запустить файлы Docker Compose внутри WSL без Docker Desktop?
Да. Установите Docker Engine прямо внутри systemd-включенного WSL-дистрибутива, или используйте Podman с podman-compose, или Rancher Desktop с движком Moby. Все три запускают файлы docker-compose.yml без Docker Desktop VM.
Поддерживает ли WSL 2 GPU Nvidia для контейнеров?
Да на поддерживаемых драйверах Nvidia. Установите набор инструментов CUDA-on-WSL внутри дистрибутива, раскройте GPU с Nvidia Container Toolkit, и контейнеры его видят. Поддержка AMD на WSL ограничена новыми сборками ROCm и определенными картами.
Должен ли я держать данные контейнеров на Windows-приводах или на стороне Linux?
Держите их на стороне Linux ext4. Привязки монтирования к /mnt/c пересекают границу файловой системы 9P и замедляют сборки и базы данных до ползания. Используйте доступ к файловой системе Windows только для редактирования исходников.
Как заставить WSL-контейнеры автозагружаться при входе в Windows?
Два пути. Добавьте boot.command в /etc/wsl.conf внутри дистрибутива (WSL 2 с systemd его запускает), или добавьте запись Task Scheduler, которая запускает wsl -d Ubuntu -u root -- systemctl start yourservice.service при входе.
Достаточно ли быстр WSL 2 для домашней лаборатории, которая раньше работала на Docker Desktop?
Для большинства работ домашней лаборатории да, и часто быстрее, потому что в стеке нет дополнительной utility VM. Базы данных и тяжелый I/O выигрывают больше всего, когда данные находятся на стороне ext4; легкие сервисы не видят никакой разницы в любом случае.