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 Управувајте со 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 ќе се врати во нормална работа и ќе се најдеме на истото место како и пред да го инсталираме docker.

Не најдов решение како да ги усогласам Hyper-V и VMWare Workstation, се надевам дека ќе станат пријатели во нови верзии.

Друг начин

Одамна сум зависник од VMWare Workstation за различни намени, се обидов да се симнам на Hyper-V и VirtualBox, но функционалноста не ги задоволи моите задачи и така седам до ден-денес. Се испостави дека постои решение како да се дружат VMWare, Docker и VSCode во една работна средина.

Докер машина - ви овозможува да го стартувате Docker Engine на виртуелен домаќин и да се поврзете со него и од далечина и локално. И има двигател за компатибилност на VMWare Workstation за него, линк до github

Нема да ги прераскажувам особено упатствата за инсталација, само списокот на состојки:

  1. Docker Toolbox (Докер машина вклучени)
  2. Возач за работна станица VMware Docker Machine
  3. Докер работна површина

Да, Docker Desktop, за жал, исто така ќе биде потребен. Ако сте го уништиле, тогаш инсталирајте го повторно, но овој пат отстранете го полето за избор за правење промени во оперативниот систем, за да не се скрши повторно VMWare Workstation.

Сакам веднаш да забележам дека сè работи добро од едноставен корисник, програмите за инсталација ќе побараат ескалација на правата кога им треба, но сите команди на командната линија и скриптите се извршуваат од тековниот корисник.

Како резултат на тоа, тимот:

$ docker-machine create --driver=vmwareworkstation dev

од Boot2Docker ќе се креира dev virtualka во која ќе биде Docker.

Оваа виртуелна машина може да се прикачи на VMWare Workstation GUI со отворање на соодветната vmx датотека. Но, ова не е неопходно, бидејќи VSCode сега ќе треба да изврши PowerShell скрипта (поради некоја причина, мојата docker-machine и docker-machine-driver-vmwareworkstation завршија во папката за отпадоци):

cd ~/bin
./docker-machine env dev | Invoke-Expression
code

VSCode ќе се отвори за да работи со код на локалната машина и докер во виртуелната машина. Вклучи, поврзи Докер за код на Visual Studio ви овозможува практично да управувате со контејнери во виртуелна машина без да влезете во конзолата.

Тешкотии:

Во процесот на создавање на докер-машина, процесот висеше за мене:

Waiting for SSH to be available...

Docker и VMWare Workstation на истата машина со Windows

И по некое време заврши со вишок на обиди да се воспостави врска со виртуелната машина.

Се е до политиката за сертификати. Кога креирате виртуелна машина, ќе имате директориум ~.dockermachinemachinesdev во овој директориум ќе има датотеки со сертификати за поврзување преку SSH: id_rsa, id_rsa.pub. OpenSSH може да одбие да ги користи бидејќи мисли дека имаат проблеми со дозволата. Само докер-машина нема да ви каже ништо за ова, туку едноставно повторно ќе се поврзе додека не му здодее.

решение: Штом ќе започне создавањето на нова виртуелна машина, одиме во директориумот ~ .dockermachinemachinesdev и ги менуваме правата на наведените датотеки, едно по едно.

Датотеката мора да биде во сопственост на тековниот корисник, само тековниот корисник и СИСТЕМ имаат целосен пристап, сите други корисници, вклучувајќи ја и групата администратори и самите администратори, мора да се избришат.

Исто така, може да има проблеми со конвертирање на апсолутни патеки од Windows во формат Posix и врзување на томови кои содржат симболични врски. Но, тоа е друга приказна.

Извор: www.habr.com

Додадете коментар