Docker И Рабочая Станция Vmware На Одной Машине Windows

Задача была простая, установить Docker на свой рабочий ноутбук с Windows, на котором уже есть зоопарк.

Я установил Docker Desktop, создал контейнеры, всё было ок, но быстро обнаружил, что VMWare Workstation перестала запускать виртуальные машины с ошибкой:

  
  
  
  
   

VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.



Работа остановлена, нужно срочно исправлять



Docker и рабочая станция VMWare на одной машине Windows

Погуглив, выяснилось, что данная ошибка возникает из-за несовместимости VMWare Workstation и Hyper-V на одной машине.

Проблема известна и существует такое официальное решение VMWare. исправить , со ссылкой на базу знаний Microsoft Управление Credential Guard в Защитнике Windows .

Решение — отключить Defender Credential Guard (мне помог пункт 4 раздела Отключить Credential Guard в Windows Defender):

mountvol X: /s copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi" bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215} bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X: mountvol X: /d

После перезагрузки Windows спросит вас, отключить ли Defender Credential Guard. Да! Таким образом VMWare Workstation вернется к нормальной работе и мы окажемся в том же месте, что и до установки докера.

Я до сих пор не нашел решения по совмещению Hyper-V и VMWare Workstation, надеюсь в новых версиях они подружатся.



Другой путь

Я давно подсел на VMWare Workstation для разных целей, пробовал переходить на Hyper-V и VirtualBox, но функционал не удовлетворял мои потребности, и я застрял там по сей день.

Оказалось, есть решение, как объединить VMWare, Docker и VSCode в одной рабочей среде.

Докер-машина — позволяет запускать Docker Engine на виртуальном хосте и подключаться к нему как удаленно, так и локально.

И для него есть драйвер совместимости с VMWare Workstation, ссылка на гитхаб Инструкцию по установке особо пересказывать не буду, просто список ингредиентов:

  1. Панель инструментов Докера ( Докер-машина включено)
  2. Драйвер рабочей станции Docker Machine VMware
  3. Докер Рабочий стол
Да, Docker Desktop, к сожалению, тоже понадобится.

Если вы его снесли, то установите заново, но на этот раз сняв галочку о внесении изменений в ОС, чтобы лишний раз не ломать VMWare Workstation. Сразу отмечу, что от простого пользователя все работает нормально, программы установки будут запрашивать повышение прав, когда им это понадобится, но все команды в командной строке и скрипты выполняются от текущего пользователя.

В результате команда:

$ docker-machine create --driver=vmwareworkstation dev

из Boot2Docker будет создана виртуальная машина разработки, внутри которой будет установлен Docker. Эту виртуальную машину можно подключить к графическому интерфейсу VMWare Workstation, открыв соответствующий vmx-файл.

Но это не обязательно, потому что VSCode теперь нужно будет запускать PowerShell как скрипт (почему-то в папке bin оказались docker-machine и docker-machine-driver-vmwareworkstation):

cd ~/bin .

/docker-machine env dev | Invoke-Expression code

VSCode откроется для работы с кодом на локальной машине и Docker на виртуальной машине.

Плагин Докер для кода Visual Studio позволяет удобно управлять контейнерами на виртуальной машине, не заходя в консоль.

Сложности: Во время создания докер-машины у меня завис процесс:

Waiting for SSH to be available.



Docker и рабочая станция VMWare на одной машине Windows

И через некоторое время это закончилось новыми попытками установить соединение с виртуальной машиной.

Все дело в политике сертификатов.

При создании виртуальной машины у вас будет каталог ~\.

docker\machine\machines\dev в этом каталоге будут файлы сертификатов для подключения по SSH: id_rsa, id_rsa.pub. OpenSSH может отказаться использовать их, поскольку считает, что у них проблемы с разрешениями.

Только докер-машина вам ничего по этому поводу не скажет, она просто будет переподключаться, пока не надоест. Решение: Как только начнется создание новой виртуальной машины, перейдите в каталог ~\.

docker\machine\machines\dev и по одному измените права на указанные файлы.

Владельцем файла должен быть текущий пользователь, полный доступ имеют только текущий пользователь и СИСТЕМА, всех остальных пользователей, включая группу администраторов и самих администраторов, необходимо удалить.

Также могут возникнуть проблемы с преобразованием абсолютных путей из формата Windows в Posix и с привязкой томов, содержащих символическую ссылку.

Но это уже другая история.

Теги: #Виртуализация #Windows #docker #DevOps #Visual Studio #vscode #vmware Workstation

Вместе с данным постом часто просматривают: