Opgaven var enkel, at installere Docker på min arbejdsbærbar med Windows, som allerede har et rod. Jeg installerede Docker Desktop, og lavede containere, alt var fint, indtil jeg hurtigt opdagede, at VMWare Workstation stoppede med at starte virtuelle maskiner med en fejl:
VMware Workstation og Device/Credential Guard er ikke kompatible. VMware Workstation kan køres efter deaktivering af Device/Credential Guard.
Arbejdet er stoppet, jeg skal hurtigt have det repareret

Ved at google fandt jeg ud af, at denne fejl opstår på grund af inkompatibilitet mellem VMWare Workstation og Hyper-V på én maskine. Problemet er velkendt, og der findes en officiel løsning fra VMWare til dette , med et link til Microsofts vidensbase . Løsningen består i at deaktivere Defender Credential Guard (punkt 4 i afsnittet Deaktiver Windows Defender Credential Guard hjalp 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: /dEfter genstart vil Windows spørge, om man virkelig vil deaktivere Defender Credential Guard. Ja! På denne måde vil VMWare Workstation vende tilbage til normal drift, og vi vil være i samme situation som før Docker-installationen.
Jeg fandt ikke løsninger til hvordan man kan forene Hyper-V og VMWare Workstation, jeg håber, at de i fremtidige versioner kan blive kompatible.
En anden vej
Jeg har længe været fan af VMWare Workstation til forskellige formål, jeg har forsøgt at skifte til Hyper-V og VirtualBox, men funktionaliteterne kunne ikke opfylde mine behov, så jeg sidder stadig her. Det viste sig, at der er en løsning på at få VMWare, Docker og VSCode til at arbejde sammen i ét miljø.
— gør det muligt at køre Docker Engine på en virtuel vært og forbinde til den både eksternt og lokalt. Og der findes en kompatibilitetsdriver til VMWare Workstation,
Jeg vil ikke gentage installationsvejledningen, kun listen over ingredienser:
- ( i pakken)
- Docker Desktop
Ja, Docker Desktop vil desværre også være nødvendigt. Hvis du har fjernet det, skal vi installere det igen, men denne gang uden at fluebokse ændringer i OS, så vi ikke bryder VMWare Workstation endnu en gang.
Jeg ønsker straks at bemærke, at alt fungerer fint fra en standardbruger, installationsprogrammerne vil anmode om rettighedsforhøjelse, når de har brug for det, men alle kommandoer i kommandoprompt og scripts udføres af den nuværende bruger.
I sidste ende med kommandoen:
$ docker-machine create --driver=vmwareworkstation devFra Boot2Docker vil der blive oprettet en virtuel maskine dev, som Docker vil køre i.
Denne virtuelle maskine kan tilsluttes den grafiske grænseflade i VMWare Workstation ved at åbne den tilsvarende vmx-fil. Men det er ikke nødvendigt, da VSCode nu kræver, at PowerShell-scriptet køres (jeg har af en eller anden grund docker-machine og docker-machine-driver-vmwareworkstation i mappen bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeVSCode åbnes for at arbejde med kode på den lokale maskine og Docker i den virtuelle maskine. Plugin gør det nemt at administrere containere i den virtuelle maskine uden at skulle ind i konsollen.
Udfordringer:
Under oprettelsen af docker-machine hang processen:
Waiting for SSH to be available... 
Og efter noget tid afsluttede den med at overskride antallet af forsøg på at oprette forbindelse til den virtuelle maskine.
Det hele handler om certifikatpolitikken. Når du opretter en virtuel maskine, får du en mappe ~/.dockermachinemachinesdev, hvor der vil være certifikatfiler til SSH-forbindelse: id_rsa, id_rsa.pub. OpenSSH kan nægte at bruge dem, da den mener, at der er problemer med adgangsrettighederne. Men docker-machine fortæller dig ikke noget om det, den vil bare forsøge at genoprette forbindelsen, indtil den bliver træt af det.
Løsning: Så snart oprettelsen af en ny virtuel maskine starter, går vi ind i mappen ~/.dockermachinemachinesdev og ændrer rettighederne på de angivne filer, én ad gangen.
Ejeren af filen skal være den nuværende bruger, fuld adgang skal kun være for den nuværende bruger og SYSTEM; alle andre brugere, inklusiv administratorgruppen og selve administratorerne, skal fjernes.
Der kan også opstå problemer med konvertering af absolutte stier fra Windows-format til Posix og med bindning af volumener, der indeholder symboliske links. Men det er en anden historie.
Kilde: habr.com
