Задачата беше проста - да инсталирам Docker на работния си лаптоп с Windows, на който вече имам зоопарк от приложения. Инсталирах Docker Desktop, създадох контейнери, всичко е наред, но бързо открих, че VMWare Workstation спря да стартира виртуални машини с грешка:
VMware Workstation и Device/Credential Guard не са съвместими. VMware Workstation може да се стартира след деактивиране на Device/Credential Guard.
Работата спря, трябва спешно да го оправя.

Чрез гуглене установих, че тази грешка възниква поради несъвместимостта между VMWare Workstation и Hyper-V на един компютър. Проблемът е известен и има официално решение от VMWare как да се , с линк към базата знания на Майкрософт. . Решението включва деактивиране на Defender Credential Guard (на мен ми помогна точка 4 от раздела Деактивиране на 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 ще се върне към нормалната работа, и ние ще се окажем на същото място, както преди инсталацията на Docker.
Решение как да помиря Hyper-V и VMWare Workstation не намерих, надявам се в новите версии да успеят.
Друг подход
Отдавна ползвам VMWare Workstation за различни цели, опитвах се да премина на Hyper-V и VirtualBox, но функционалността не удовлетвори задачите ми, така че все още съм на него. Оказа се, че има решение как да събера VMWare, Docker и VSCode в една работна среда.
— позволява стартиране на Docker Engine на виртуален хост и свързване с него както дистанционно, така и локално. За него има драйвер за съвместимост с VMWare Workstation,
Инструкцията за инсталация няма да я повторя, само списък с необходимите компоненти:
- ( в комплекта)
- 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 в виртуалката. Плъгинът позволява удобно управление на контейнерите в виртуалката, без да се налага да влизате в конзолата.
Трудности:
По време на създаването на docker-machine, процесът ми се засякло:
Waiting for SSH to be available... 
И след известно време завърши с прекратяване на опитите за установяване на връзка с виртуалката.
Причината е в политиката относно сертификатите. Когато създавате виртуална машина, ще получите каталог ~/.dockermachinemachinesdev, в който ще бъдат файловете със сертификатите за свързване по SSH: id_rsa, id_rsa.pub. OpenSSH може да откаже да ги използва, тъй като счита, че имат проблеми с правата за достъп. Само че docker-machine няма да ви каже нищо за това, а просто ще опитва да се свърже, докато не му омръзне.
Решението: В момента, в който започне създаването на нова виртуална машина, влизаме в каталога ~/.dockermachinemachinesdev и променяме правата на посочените файлове един по един.
Собственикът на файла трябва да бъде текущият потребител, пълен достъп само за текущия потребител и SYSTEM, всички останали потребители, включително групата администратори и самите администратори, трябва да бъдат премахнати.
Също така могат да възникнат проблеми с преобразуването на абсолютни пътища от Windows формат в Posix и с свързването на томове, съдържащи символни връзки. Но това е друга история.
Източник: habr.com
