Вопрос или проблема
-
ОС: Win 10 Enterprise 22H2 сборка 19045
-
Гипервизор: VMware® Workstation 17 Pro
Можно ли установить WSL на клиенте Windows, не устанавливая функцию Hyper-V?
Моя проблема в том, что я использую VMWare Workstation Pro для своих лабораторий. И теперь я хотел бы использовать Docker Desktop на своем компьютере для хостинга своих контейнеров.
Но, к сожалению, Docker Desktop сообщает, что я не установил Hyper-V, но это нормально, потому что невозможно иметь 2 гипервизора типа 1 на одном хосте.
У вас есть идеи, как мне обойтись своими локальными контейнерами? Может быть, без Docker Desktop, но мне нужно немного света 🙂
WSL2 это фактически виртуальная машина Hyper-V, поэтому требуется наличие Windows Hypervisor. Вы не можете запустить его на VMware.
Согласно документации VMware, Workstation Pro 15.5.5 (или более поздней версии, я предполагаю?) поддерживает использование Windows Hypervisor вместо собственного гипервизора в режиме “Host VBS”.
Нет возможности использовать Docker Desktop для запуска Linux-контейнеров на Windows без Hyper-V. Ему необходимо либо запускать собственную Linux ВМ (по умолчанию, если я правильно помню), либо иметь среду WSL2, с которой он может работать (что, в свою очередь, требует Hyper-V (технически ‘Windows Hypervisor’, но это просто название, которое выбрала Microsoft для интерфейса). На самом деле, вы не можете использовать его для запуска родных Windows-контейнеров на Windows без Hyper-V, потому что это потребовало бы функцией ‘Контейнеры’, которая также зависит от Hyper-V.
Это оставляет вам несколько вариантов:
- Создать полноценную Linux ВМ в VMWare и установить Docker там. Это, вероятно, будет самым простым вариантом, а также, вероятно, лучшим с точки зрения обучения.
- Создать Windows ВМ в VMWare с включенной поддержкой вложенной виртуализации и установить Docker Desktop в этом случае. Это будет иметь ужасную производительность (Windows не виртуализируется хорошо, а Hyper-V делает это еще хуже), но это значит, что вам не придется напрямую иметь дело с Linux.
- Настроить свой компьютер для двойной загрузки с установкой Linux и установить Docker там. Это обеспечит вам наилучшие возможные характеристики для контейнеров, но они не будут доступны одновременно с вашими ВМ или системой Windows.
Ответ или решение
Для использования контейнеров в Windows с установленным WSL 2 без включения функции Hyper-V, необходимо уточнить, что WSL 2 фактически является виртуальной машиной Hyper-V, и требует наличие Windows Hypervisor для корректной работы. Следовательно, если вы используете VMware Workstation Pro, конфликт между гипервизорами может препятствовать правильной работе WSL 2 и Docker Desktop.
К сожалению, использование Docker Desktop для работы с контейнерами в Windows без Hyper-V не представляется возможным, так как он требует либо использовать собственную виртуальную машину, либо работать в среде WSL 2, что также подразумевает наличие Hyper-V. Кроме того, для запуска нативных контейнеров Windows также необходима поддержка Hyper-V.
В данной ситуации я предлагаю несколько альтернативных решений:
-
Настройка Linux VM в VMware: Легчайший способ решения вашей проблемы — это создание полноценной виртуальной машины с операционной системой Linux внутри VMware и установка Docker в этой среде. Это обеспечит вам всю функциональность Docker и возможность работы с контейнерами.
-
Настройка Windows VM с использованием вложенной виртуализации: Создание виртуальной машины Windows в VMware с включенной вложенной виртуализацией позволяет установить Docker Desktop в этой среде. Однако, стоит отметить, что производительность будет значительно снизится, так как виртуализация Windows не является оптимальной.
-
Дуальное загрузка с установкой Linux: Рассмотрите возможность настройки системы с dual boot, чтобы получить возможность работать в Linux и устанавливать Docker там. Этот способ обеспечит наилучшие характеристики производительности, но контейнеры не будут доступны одновременно с вашими виртуальными машинами или системой Windows.
Каждое из указанных выше решений имеет свои плюсы и минусы, и выбор зависит от ваших конкретных потребностей и рабочего процесса. Если ваш основной фокус — это работа с контейнерами, наилучшим вариантом будет использование Linux VM внутри VMware или установка Linux на второй раздел диска.