Docker och VMWare Workstation på samma Windows-maskin

Uppgiften var enkel, satte Docker på min fungerande Windows-laptop, som redan har en djurpark. Jag installerade Docker Desktop och skapade behållare, allt är ok, men jag upptäckte snabbt att VMWare Workstation slutade köra virtuella maskiner med ett fel:

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

Arbetet har upphört, det är bråttom att reparera

Docker och VMWare Workstation på samma Windows-maskin

Genom att googla upptäckte det att detta fel uppstår på grund av inkompatibiliteten hos VMWare Workstation och Hyper-V på samma maskin. Problemet är känt och det finns en officiell VMWare-lösning som denna att fixa, med en länk till Microsoft Knowledge Base Hantera Windows Defender Credential Guard. Lösningen är att inaktivera Defender Credential Guard (punkt 4 i avsnittet Disable Windows Defender Credential Guard hjälpte mig):

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

Efter omstart kommer Windows att fråga om du verkligen vill inaktivera Defender Credential Guard. Ja! På detta sätt kommer VMWare Workstation att återgå till normal drift och vi kommer att befinna oss på samma plats som innan vi installerade docker.

Jag har inte hittat en lösning på hur man ska förena Hyper-V och VMWare Workstation, jag hoppas att de kommer att bli vänner i nya versioner.

En annan väg

Jag har länge varit beroende av VMWare Workstation för olika ändamål, jag försökte gå av med Hyper-V och VirtualBox, men funktionaliteten tillfredsställde inte mina uppgifter, och så sitter jag än i dag. Det visade sig att det finns en lösning för att få vänner VMWare, Docker och VSCode i en arbetsmiljö.

Docker-maskin - låter dig köra Docker Engine på en virtuell värd och ansluta till den både på distans och lokalt. Och det finns en VMWare Workstation-kompatibilitetsdrivrutin för det, länk till github

Jag kommer inte att återberätta installationsinstruktionerna speciellt, bara ingredienslistan:

  1. Docker Toolbox (Docker-maskin ingår)
  2. Docker Machine VMware Workstation-drivrutin
  3. DockerDesktop

Ja, Docker Desktop kommer tyvärr också att behövas. Om du har demolerat det, installera det igen, men den här gången tar du bort kryssrutan om att göra ändringar i operativsystemet för att inte skada VMWare Workstation igen.

Jag vill genast notera att allt fungerar bra från en enkel användare, installationsprogrammen kommer att be om eskalering av rättigheter när de behöver det, men alla kommandon på kommandoraden och skript exekveras från den aktuella användaren.

Som ett resultat, laget:

$ docker-machine create --driver=vmwareworkstation dev

från Boot2Docker kommer en dev virtualka att skapas inuti som kommer att vara Docker.

Denna virtuella maskin kan kopplas till VMWare Workstation GUI genom att öppna motsvarande vmx-fil. Men detta är inte nödvändigt, eftersom VSCode nu kommer att behöva köra ett PowerShell-skript (av någon anledning hamnade min docker-machine och docker-machine-driver-vmwareworkstation i bin-mappen):

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

VSCode kommer att öppnas för att arbeta med kod på den lokala maskinen och docker i den virtuella maskinen. plugin Docker för Visual Studio Code låter dig enkelt hantera behållare i en virtuell maskin utan att komma in i konsolen.

Svårigheter:

I processen att skapa docker-machine hängde processen för mig:

Waiting for SSH to be available...

Docker och VMWare Workstation på samma Windows-maskin

Och efter ett tag slutade det med ett överflöd av försök att upprätta en anslutning till den virtuella maskinen.

Allt handlar om certifikatpolicy. När du skapar en virtuell maskin kommer du att ha en ~.dockermachinemachinesdev-katalog i denna katalog, det kommer att finnas certifikatfiler för anslutning via SSH: id_rsa, id_rsa.pub. OpenSSH kan vägra att använda dem eftersom det tror att de har behörighetsproblem. Endast docker-machine kommer inte att berätta något om detta, utan kommer helt enkelt att återansluta tills den blir uttråkad.

lösning: Så snart skapandet av en ny virtuell maskin börjar, går vi till ~ .dockermachinemachinesdev-katalogen och ändrar rättigheterna till de angivna filerna, en i taget.

Filen måste ägas av den aktuella användaren, endast nuvarande användare och SYSTEM har full åtkomst, alla andra användare, inklusive administratörsgruppen och administratörerna själva, måste raderas.

Det kan också finnas problem med att konvertera absoluta sökvägar från Windows till Posix-format och binda volymer som innehåller symboliska länkar. Men det är en annan historia.

Källa: will.com

Lägg en kommentar