L'obiettivo era semplice: installare Docker sul mio laptop di lavoro con Windows, che era già un po' un gran casino. Ho installato Docker Desktop, creato i container, tutto ok, ma ho scoperto rapidamente che VMWare Workstation non partiva più per l'errore:
VMware Workstation e Device/Credential Guard non sono compatibili. VMware Workstation può essere eseguito dopo aver disabilitato Device/Credential Guard.
Il lavoro si è fermato, bisogna riparare urgentemente

Guglando, ho scoperto che questo errore si verifica a causa dell'incompatibilità tra VMWare Workstation e Hyper-V sulla stessa macchina. È un problema conosciuto e VMware ha una soluzione ufficiale su come , con riferimento alla base di conoscenza Microsoft . La soluzione consiste nel disabilitare Defender Credential Guard (il punto 4 della sezione Disattivare 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: /dDopo il riavvio, Windows chiederà se si desidera realmente disabilitare il Defender Credential Guard. Sì! In questo modo, VMWare Workstation tornerà a funzionare normalmente, e saremo esattamente dove eravamo prima di installare Docker.
Non ho trovato soluzioni per far coesistere Hyper-V e VMWare Workstation, spero che nelle nuove versioni possano collaborare.
Un altro modo
Da tempo utilizzo VMWare Workstation per vari scopi; ho provato a passare a Hyper-V e VirtualBox, ma le loro funzionalità non soddisfacevano le mie esigenze, e così sono rimasto. Si è rivelato che esiste una soluzione per unire VMWare, Docker e VSCode in un unico ambiente di lavoro.
— consente di eseguire Docker Engine su un host virtuale e di connettersi a esso sia in remoto che localmente. Esiste un driver di compatibilità con VMWare Workstation.
Non ripeterò in dettaglio le istruzioni per l'installazione, solo l'elenco degli ingredienti:
- ( in dotazione)
- Docker Desktop
Sì, Docker Desktop, purtroppo, sarà necessario. Se lo avete rimosso, reinstallatelo, ma questa volta deselezionando la casella riguardo le modifiche al sistema operativo, per non danneggiare nuovamente VMWare Workstation.
Voglio subito sottolineare che tutto funziona perfettamente dal punto di vista dell'utente, i programmi di installazione richiederanno l'escalation dei diritti quando necessario, ma tutti i comandi nella riga di comando e gli script vengono eseguiti dall'utente corrente.
Di seguito il comando:
$ docker-machine create --driver=vmwareworkstation devverrà creata una macchina virtuale dev all'interno di Boot2Docker, in cui sarà presente Docker.
Questa macchina virtuale può essere collegata all'interfaccia grafica di VMWare Workstation, aprendo il relativo file vmx. Ma non è obbligatorio, poiché ora sarà necessario avviare VSCode tramite uno script PowerShell (per qualche motivo, docker-machine e docker-machine-driver-vmwareworkstation si trovavano precisamente nella cartella bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeSi aprirà VSCode per lavorare con il codice sulla macchina locale e Docker nella macchina virtuale. Il plugin consente di gestire comodamente i contenitori nella macchina virtuale senza dover accedere alla console.
Difficoltà:
Durante la creazione di docker-machine, il processo si bloccava:
Waiting for SSH to be available... 
E dopo un po', il tentativo di stabilire la connessione con la macchina virtuale è terminato per superamento dei tentativi.
Tutto ruota attorno alla politica dei certificati. Quando crei una macchina virtuale, verrà creato un catalogo ~.dockermachinemachinesdev in cui si troveranno i file del certificato per la connessione SSH: id_rsa, id_rsa.pub. OpenSSH potrebbe rifiutarsi di utilizzarli, ritenendo che abbiano problemi di autorizzazione. Solo che docker-machine non ti dirà nulla a riguardo e semplicemente continuerà a riconnettersi finché non diventa noioso.
Soluzione: Non appena inizia la creazione di una nuova macchina virtuale, accediamo al catalogo ~.dockermachinemachinesdev e cambiamo i permessi sui file indicati, uno alla volta.
Il proprietario del file deve essere l'utente attuale, con accesso completo solo per l'utente attuale e SYSTEM; tutti gli altri utenti, compresi il gruppo degli amministratori e gli stessi amministratori, devono essere rimossi.
Ci possono anche essere problemi con la conversione dei percorsi assoluti dal formato Windows a Posix, e con il binding dei volumi che contengono link simbolici. Ma questa è un'altra storia.
Fonte: habr.com
