VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
Работа встала, нужно срочно чинить
Методом гугления было выяснено, что данная ошибка возникает из-за несовместимости VMWare Workstation и Hyper-V на одной машине. Проблема известная и есть официальное решение VMWare как это починить, со ссылкой на базу знаний Microsoft Manage Windows Defender Credential Guard. Решение заключается в отключении Defender Credential Guard (мне помог пункт 4 раздела Disable Windows Defender Credential Guard):
mountvol X: /s
copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "EFIMicrosoftBootSecConfig.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 Machine — позволяет запускать Docker Engine на виртуальном хосте и подключаться к нему как удаленно, так и локально. И для него есть драйвер совместимости с VMWare Workstation, ссылка на GitHub
Инструкцию по установке особо пересказывать не буду, только список ингридиентов:
- Docker Toolbox (Docker Machine в комплекте)
- Docker Machine VMware Workstation Driver
- Docker Desktop
Да, Docker Desktop, к сожалению, тоже понадобится. Если снесли его, то устанавливаем заново, но на этот раз убрав чекбокс о внесении изменений в ОС, чтоб вновь не сломать VMWare Workstation.
Сразу хочу заметить, что всё прекрасно работает от простого пользователя, программы установки попросят эскалацию прав когда им будет нужно, но все команды в командной строке и скрипты выполняются от текущего пользователя.
В итоге командой:
$ docker-machine create --driver=vmwareworkstation dev
из Boot2Docker будет создана виртуалка dev внутри которой будет Docker.
Эту виртуалку можно прицепить в графический интерфейс VMWare Workstation, открыв соответствующий vmx файл. Но это не обязательно, ведь VSCode теперь потребуется запускать PowerShell скриптом (у меня почему-то docker-machine и docker-machine-driver-vmwareworkstation оказались именно в папке bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
code
Откроется VSCode для работы кодом на локальной машине и докером в виртуалке. Плагин Docker for Visual Studio Code позволяет удобно управлять контейнерами в виртуалке не залезая в консоль.
Сложности:
В процессе создания docker-machine у меня процесс зависал:
Waiting for SSH to be available...
И через некоторое время завершился с превышением попыток установить соединение с виртуалкой.
Всё дело в политике к сертификатам. При создании виртуальной машины, у вас появится каталог ~.dockermachinemachinesdev в этом каталоге будут файлы сертификата для подключения по SSH: id_rsa, id_rsa.pub. OpenSSH может отказываться их использовать, так как считает что у них проблемы с правами доступа. Только вот docker-machine вам об этом ничего не скажет, а просто будет переподключаться пока не надоест.
Решение: Как только начнется создание новой виртуальной машины заходим в каталог ~.dockermachinemachinesdev и меняем права на указанные файлы, по одному.
Владельцем файла должен быть текущий пользователь, полный доступ только у текущего пользователя и SYSTEM, всех остальных пользователей, включая группу администраторов и самих администраторов нужно удалять.
Так же могут быть проблемы с преобразованием абсолютных путей из Windows формата в Posix, и с биндингом томов содержащих symbolic link. Но это уже другая история.
Специально для сайта ITWORLD.UZ. Новость взята с сайта Хабр