Docker en VMWare Workstation op dezelfde Windows-machine

De taak was eenvoudig, plaats Docker op mijn werkende Windows-laptop, die al een dierentuin heeft. Ik heb Docker Desktop geïnstalleerd en containers gemaakt, alles is in orde, maar ik ontdekte al snel dat VMWare Workstation stopte met het uitvoeren van virtuele machines met een fout:

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

Het werk is gestopt, het is dringend nodig om te repareren

Docker en VMWare Workstation op dezelfde Windows-machine

Door te googelen kwam men erachter dat deze fout optreedt vanwege de incompatibiliteit van VMWare Workstation en Hyper-V op dezelfde machine. Het probleem is bekend en er is een officiële VMWare-oplossing zoals deze repareren, met een koppeling naar de Microsoft Knowledge Base Beheer Windows Defender Credential Guard. De oplossing is om Defender Credential Guard uit te schakelen (item 4 van de sectie Windows Defender Credential Guard uitschakelen heeft me geholpen):

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

Na het herstarten zal Windows vragen of je Defender Credential Guard echt wilt uitschakelen. Ja! Op deze manier keert VMWare Workstation terug naar de normale werking en bevinden we ons op dezelfde plek als voordat we docker installeerden.

Ik heb geen oplossing gevonden voor het verzoenen van Hyper-V en VMWare Workstation, ik hoop dat ze vrienden zullen worden in nieuwe versies.

Een andere manier

Ik ben al lang verslaafd aan VMWare Workstation voor verschillende doeleinden, ik probeerde uit te stappen op Hyper-V en VirtualBox, maar de functionaliteit voldeed niet aan mijn taken, en dus zit ik tot op de dag van vandaag. Er bleek een oplossing te zijn om vrienden te maken met VMWare, Docker en VSCode in één werkomgeving.

Docker-machine - stelt u in staat Docker Engine op een virtuele host uit te voeren en er zowel op afstand als lokaal verbinding mee te maken. En er is een VMWare Workstation-compatibiliteitsstuurprogramma voor, link naar github

Ik zal niet speciaal de installatie-instructies opnieuw vertellen, alleen de lijst met ingrediënten:

  1. Docker-werkset (Docker-machine inbegrepen)
  2. Docker Machine VMware Workstation-stuurprogramma
  3. Docker-bureaublad

Ja, Docker Desktop zal helaas ook nodig zijn. Als je het hebt gesloopt, installeer het dan opnieuw, maar verwijder deze keer het selectievakje over het aanbrengen van wijzigingen in het besturingssysteem, om VMWare Workstation niet opnieuw te breken.

Ik wil meteen opmerken dat alles prima werkt voor een eenvoudige gebruiker, de installatieprogramma's zullen om escalatie van rechten vragen wanneer ze die nodig hebben, maar alle opdrachten op de opdrachtregel en scripts worden uitgevoerd door de huidige gebruiker.

Het resultaat is dat het team:

$ docker-machine create --driver=vmwareworkstation dev

van Boot2Docker wordt een dev virtualka gemaakt waarbinnen Docker zal zijn.

Deze virtuele machine kan worden gekoppeld aan de VMWare Workstation GUI door het overeenkomstige vmx-bestand te openen. Maar dit is niet nodig, omdat VSCode nu een PowerShell-script moet uitvoeren (om de een of andere reden zijn mijn docker-machine en docker-machine-driver-vmwareworkstation in de bin-map terechtgekomen):

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

VSCode wordt geopend om te werken met code op de lokale machine en docker in de virtuele machine. inpluggen Docker voor Visual Studio-code stelt u in staat om gemakkelijk containers in een virtuele machine te beheren zonder in de console te komen.

Moeilijkheden:

Tijdens het maken van docker-machine liep het proces voor mij vast:

Waiting for SSH to be available...

Docker en VMWare Workstation op dezelfde Windows-machine

En na een tijdje eindigde het met een overdaad aan pogingen om verbinding te maken met de virtuele machine.

Het draait allemaal om certificaatbeleid. Wanneer u een virtuele machine maakt, heeft u een map ~.dockermachinemachinesdev in deze map zijn er certificaatbestanden voor verbinding via SSH: id_rsa, id_rsa.pub. OpenSSH kan weigeren ze te gebruiken omdat het denkt dat ze toestemmingsproblemen hebben. Alleen docker-machine zal je hier niets over vertellen, maar zal gewoon opnieuw verbinding maken totdat het verveeld raakt.

oplossing: Zodra het maken van een nieuwe virtuele machine begint, gaan we naar de map ~ .dockermachinemachinesdev en wijzigen we de rechten op de opgegeven bestanden een voor een.

Het bestand moet eigendom zijn van de huidige gebruiker, alleen de huidige gebruiker en SYSTEM hebben volledige toegang, alle andere gebruikers, inclusief de beheerdersgroep en de beheerders zelf, moeten worden verwijderd.

Er kunnen ook problemen optreden bij het converteren van absolute paden van Windows naar Posix-indeling en het binden van volumes met symbolische koppelingen. Maar dat is een ander verhaal.

Bron: www.habr.com

Voeg een reactie