Docker e VMWare Workstation sulla stessa macchina Windows

Il compito era semplice: installa Docker sul mio laptop da lavoro con Windows, che ha già uno zoo. Ho installato Docker Desktop, creato i container, tutto era ok, ma ho subito scoperto che VMWare Workstation smetteva di avviare le macchine virtuali con l'errore:

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

Il lavoro si è fermato, è necessario sistemarlo urgentemente

Docker e VMWare Workstation sulla stessa macchina Windows

Cercando su Google, è stato riscontrato che questo errore si verifica a causa dell'incompatibilità di VMWare Workstation e Hyper-V sulla stessa macchina. Il problema è noto ed esiste una soluzione VMWare ufficiale come questa fissare, con un collegamento alla Knowledge Base di Microsoft Gestisci la protezione delle credenziali di Windows Defender. La soluzione è disabilitare Defender Credential Guard (il punto 4 della sezione Disabilita Windows Defender Credential Guard mi ha aiutato):

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

Dopo il riavvio, Windows ti chiederà se disabilitare Defender Credential Guard. SÌ! In questo modo VMWare Workstation tornerà al normale funzionamento e ci troveremo nella stessa posizione in cui si trovava prima dell'installazione della finestra mobile.

Non ho ancora trovato una soluzione per conciliare Hyper-V e VMWare Workstation, spero che diventino amici nelle nuove versioni.

Un altro modo

Sono stato a lungo dipendente da VMWare Workstation per vari scopi, ho provato a passare a Hyper-V e VirtualBox, ma la funzionalità non ha soddisfatto le mie esigenze e sono ancora bloccato lì fino ad oggi. Si è scoperto che esiste una soluzione su come combinare VMWare, Docker e VSCode in un unico ambiente di lavoro.

Macchina portuale — consente di eseguire Docker Engine su un host virtuale e di connettersi ad esso sia in remoto che localmente. Ed è disponibile un driver di compatibilità VMWare Workstation, collegamento a github

Non rivelerò in particolare le istruzioni di installazione, solo l'elenco degli ingredienti:

  1. Casella degli strumenti Docker (Macchina portuale incluso)
  2. Driver della workstation VMware della macchina Docker
  3. Desktop mobile

Sì, purtroppo sarà necessario anche Docker Desktop. Se l'hai demolito, installalo di nuovo, ma questa volta rimuovendo la casella di controllo per apportare modifiche al sistema operativo, in modo da non danneggiare nuovamente VMWare Workstation.

Vorrei subito notare che tutto funziona bene da un utente semplice, i programmi di installazione chiederanno l'escalation dei diritti quando ne hanno bisogno, ma tutti i comandi sulla riga di comando e gli script vengono eseguiti dall'utente corrente.

Di conseguenza, il comando:

$ docker-machine create --driver=vmwareworkstation dev

da Boot2Docker verrà creata una macchina virtuale di sviluppo, all'interno della quale verrà installato Docker.

Questa macchina virtuale può essere collegata all'interfaccia grafica di VMWare Workstation aprendo il file vmx corrispondente. Ma questo non è necessario, perché ora VSCode dovrà essere avviato da PowerShell come script (per qualche motivo, docker-machine e docker-machine-driver-vmwareworkstation sono finiti nella cartella bin):

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

VSCode si aprirà per funzionare con il codice sulla macchina locale e Docker nella macchina virtuale. Collegare Docker per codice di Visual Studio ti consente di gestire comodamente i contenitori in una macchina virtuale senza accedere alla console.

Le difficoltà:

Durante la creazione della docker-machine, il mio processo si è bloccato:

Waiting for SSH to be available...

Docker e VMWare Workstation sulla stessa macchina Windows

E dopo un po' si è concluso con altri tentativi di stabilire una connessione con la macchina virtuale.

È tutta una questione di politica dei certificati. Quando crei una macchina virtuale, avrai una directory ~.dockermachinemachinesdev. In questa directory ci saranno i file di certificato per la connessione tramite SSH: id_rsa, id_rsa.pub. OpenSSH potrebbe rifiutarsi di utilizzarli perché ritiene che abbiano problemi di autorizzazione. Solo la docker-machine non ti dirà nulla al riguardo, si ricollegherà semplicemente finché non diventerà noiosa.

soluzione: Non appena inizia la creazione di una nuova macchina virtuale, vai alla directory ~.dockermachinemachinesdev e modifica i diritti sui file specificati, uno alla volta.

Il proprietario del file deve essere l'utente corrente, solo l'utente corrente e SYSTEM hanno pieno accesso, tutti gli altri utenti, compreso il gruppo amministratori e gli amministratori stessi, devono essere eliminati.

Potrebbero inoltre verificarsi problemi con la conversione di percorsi assoluti dal formato Windows a Posix e con l'associazione di volumi contenenti un collegamento simbolico. Ma questa è un'altra storia.

Fonte: habr.com

Aggiungi un commento