Docker і VMWare Workstation на адной 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 Workstation на адной Windows машыне

Метадам гуглення было высветлена, што дадзеная памылка ўзнікае з-за несумяшчальнасці 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 - дазваляе запускаць Docker Engine на віртуальным хасце і падлучацца да яго як выдалена, так і лакальна. І для яго ёсць драйвер сумяшчальнасці з VMWare Workstation, спасылка на GitHub

Інструкцыю па ўстаноўцы асабліва пераказваць не буду, толькі спіс інгрэдыентаў:

  1. Панэль інструментаў Docker (Машына Docker у камплекце)
  2. Docker Machine VMware Workstation Driver
  3. Docker для працоўнага стала

Так, 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...

Docker і VMWare Workstation на адной Windows машыне

І праз некаторы час завяршыўся з перавышэннем спроб усталяваць злучэнне з віртуалкай.

Уся справа ў палітыцы да сертыфікатаў. Пры стварэнні віртуальнай машыны, у вас з'явіцца каталог ~.dockermachinemachinesdev у гэтым каталогу будуць файлы сертыфіката для падлучэння па SSH: id_rsa, id_rsa.pub. OpenSSH можа адмаўляцца іх выкарыстоўваць, бо лічыць, што ў іх праблемы з правамі доступу. Толькі вось docker-machine вам пра гэта нічога не скажа, а проста будзе перападключаць пакуль не надакучыць.

рашэнне: Як толькі пачнецца стварэнне новай віртуальнай машыны заходзім у каталог ~.dockermachinemachinesdev і мяняем правы на паказаныя файлы, па адным.

Уладальнікам файла павінен быць бягучы карыстач, поўны доступ толькі ў бягучага карыстача і SYSTEM, усіх астатніх карыстачоў, уключаючы групу адміністратараў і саміх адміністратараў трэба выдаляць.

Гэтак жа могуць быць праблемы з пераўтварэннем абсалютных шляхоў з Windows фармату ў Posix, і з біндзінгам тамоў утрымоўвальных symbolic link. Але гэта ўжо іншая гісторыя.

Крыніца: habr.com

Дадаць каментар