Docker og VMWare Workstation på én Windows-maskin

Oppgaven var enkel, å installere Docker på min arbeidslaptop med Windows, hvor det allerede var et kaos. Jeg installerte Docker Desktop og opprettet containere, alt var bra, men jeg oppdaget raskt at VMWare Workstation slutte å starte virtuelle maskiner med feilen:

VMware Workstation og Device/Credential Guard er ikke kompatible. VMware Workstation kan kjøres etter å ha deaktivert Device/Credential Guard.

Arbeidet stoppet opp, jeg må fikse det raskt.

Docker og VMWare Workstation på én Windows-maskin

Ved å google fant jeg ut at denne feilen oppstår på grunn av incompatibilitet mellom VMWare Workstation og Hyper-V på samme maskin. Problemet er kjent og det finnes en offisiell løsning fra VMware for hvordan man fikser, med lenke til Microsofts kunnskapsbase. Administrer Windows Defender Credential Guard. Løsningen er å deaktivere Defender Credential Guard (punkt 4 i delen Deaktiver Windows Defender Credential Guard hjalp meg):

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

Etter omstart vil Windows spørre om du virkelig vil deaktivere Defender Credential Guard. Ja! Slik vil VMWare Workstation komme tilbake til normal drift, og vi vil befinne oss på samme sted som før vi installerte Docker.

Løsninger for å få Hyper-V og VMWare Workstation til å fungere sammen fant jeg ikke, jeg håper at de blir mer kompatible i nye versjoner.

En annen vei

Jeg har lenge vært avhengig av VMWare Workstation for forskjellige formål, jeg prøvde å bytte til Hyper-V og VirtualBox, men funksjonaliteten tilfredsstilte ikke mine behov, så jeg sitter fortsatt med det. Det viste seg at det er en løsning for å få VMWare, Docker og VSCode til å fungere sammen i ett arbeidsmiljø.

Docker Machine — lar deg kjøre Docker Engine på en virtuell vert og koble til både eksternt og lokalt. Det finnes også en kompatibilitetsdriver for VMWare Workstation, lenke til GitHub

Jeg vil ikke gå inn på installasjonsveiledningen, bare en liste med ingredienser:

  1. Docker Toolbox (Docker Machine i pakken)
  2. Docker Machine VMware Workstation Driver
  3. Docker Desktop

Ja, Docker Desktop vil dessverre også være nødvendig. Hvis du har avinstallert det, installer det på nytt, men ikke glem å fjerne avkrysningsboksen for endringer i OS, slik at vi ikke ødelegger VMWare Workstation igjen.

Jeg vil umiddelbart påpeke at alt fungerer utmerket fra en vanlig bruker; installasjonsprogrammene vil be om heving av rettigheter når de trenger det, men alle kommandoer i kommandolinjen og skriptene kjøres under den nåværende brukeren.

Til slutt med kommandoen:

$ docker-machine create --driver=vmwareworkstation dev

En Boot2Docker vil det bli opprettet en virtuell maskin dev som inneholder Docker.

Denne virtuelle maskinen kan knyttes til det grafiske grensesnittet i VMWare Workstation ved å åpne den tilsvarende vmx-filen. Men dette er ikke nødvendig, ettersom VSCode nå må startes med et PowerShell-skript (av en eller annen grunn befinner docker-machine og docker-machine-driver-vmwareworkstation seg i bin-mappen):

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

VSCode vil åpnes for å jobbe med koden på den lokale maskinen og Docker i den virtuelle maskinen. Utvidelsen Docker for Visual Studio Code lar deg enkelt administrere containere i den virtuelle maskinen uten å gå inn i konsollen.

Utfordringer:

Under opprettingen av docker-machine hang prosessen:

Waiting for SSH to be available...

Docker og VMWare Workstation på én Windows-maskin

Og etter en stund ble det avbrutt med overskridelse av forsøkene på å opprette forbindelse til den virtuelle maskinen.

Det skyldes sertifikatpolitikken. Ved oppretting av den virtuelle maskinen, vil du få en katalog ~/.dockermachinemachinesdev, i denne katalogen vil det være sertifikatfiler for SSH-tilkobling: id_rsa, id_rsa.pub. OpenSSH kan nekte å bruke dem, da det mener at de har problemer med tilgangsrettigheter. Docker-machine vil imidlertid ikke fortelle deg noe om dette, men vil bare gjenoppleve tilkoblingen til det blir kjedelig.

Løsning: Når opprettelsen av den nye virtuelle maskinen starter, går vi inn i katalogen ~/.dockermachinemachinesdev og endrer rettighetene til de angitte filene, én om gangen.

Eieren av filen må være nåværende bruker, full tilgang kun for nåværende bruker og SYSTEM, alle andre brukere, inkludert administratorgruppen og selve administratorene må fjernes.

Det kan også være problemer med å konvertere absolutte stier fra Windows-format til Posix-format, og med bindene av volumer som inneholder symboliske lenker. Men det er en annen historie.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster