La tarea era simple, instalar Docker en mi laptop de trabajo con Windows, que ya tenía un verdadero desorden. Instalé Docker Desktop, creé contenedores, todo bien, solo que rápidamente descubrí que VMWare Workstation dejó de iniciar las máquinas virtuales con el error:
VMware Workstation y Device/Credential Guard no son compatibles. VMware Workstation se puede ejecutar después de desactivar Device/Credential Guard.
El trabajo se detuvo, necesito arreglarlo urgentemente.

A través de Google, descubrí que este error se produce debido a la incompatibilidad entre VMWare Workstation y Hyper-V en una misma máquina. Es un problema conocido y hay una solución oficial de VMWare sobre cómo , con un enlace a la base de conocimientos de Microsoft . La solución consiste en desactivar Defender Credential Guard (me ayudó el punto 4 de la sección Desactivar Windows Defender Credential Guard):
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: /dDespués de reiniciar, Windows preguntará si realmente desea desactivar Defender Credential Guard. ¡Sí! De esta manera, VMWare Workstation volverá a funcionar normalmente, y estaremos en el mismo lugar que antes de instalar Docker.
No encontré soluciones sobre cómo reconciliar Hyper-V y VMWare Workstation, espero que en nuevas versiones se lleven bien.
Otra forma
Desde hace tiempo estoy utilizando VMWare Workstation para varios propósitos, intenté pasarme a Hyper-V y VirtualBox, pero la funcionalidad no satisfizo mis necesidades, así que sigo con ello. Resultó que hay una solución para integrar VMWare, Docker y VSCode en un mismo entorno laboral.
permite ejecutar Docker Engine en un host virtual y conectarse a él tanto de forma remota como local. Y hay un controlador de compatibilidad con VMWare Workstation para ello,
No voy a repetir la instrucción de instalación, solo la lista de ingredientes:
- ( en el paquete)
- Docker Desktop
Sí, Docker Desktop, desafortunadamente, también será necesario. Si lo eliminaste, instálalo de nuevo, pero esta vez desmarcando la casilla sobre realizar cambios en el sistema operativo, para no romper VMWare Workstation de nuevo.
Quiero señalar que todo funciona perfectamente desde un usuario normal, los programas de instalación pedirán escalación de derechos cuando sea necesario, pero todos los comandos en la línea de comandos y scripts se ejecutan con el usuario actual.
Al final, con el comando:
$ docker-machine create --driver=vmwareworkstation devSe creará una máquina virtual dev dentro de Boot2Docker, en la cual estará Docker.
Esta máquina virtual se puede adjuntar en la interfaz gráfica de VMWare Workstation abriendo el archivo vmx correspondiente. Pero no es necesario, ya que ahora se deberá iniciar VSCode con un script de PowerShell (por alguna razón, docker-machine y docker-machine-driver-vmwareworkstation se encontraron en la carpeta bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeSe abrirá VSCode para trabajar con el código en la máquina local y Docker en la máquina virtual. El plugin permite gestionar cómodamente los contenedores en la máquina virtual sin tener que ingresar a la consola.
Dificultades:
Durante el proceso de creación de docker-machine, el proceso se quedó colgado:
Waiting for SSH to be available... 
Y después de un tiempo terminó con un exceso de intentos para establecer conexión con la máquina virtual.
Todo se debe a la política de los certificados. Al crear la máquina virtual, aparecerá un directorio ~/.dockermachinemachinesdev, en este directorio estarán los archivos de certificado para conexión por SSH: id_rsa, id_rsa.pub. OpenSSH puede negarse a usarlos, ya que considera que tienen problemas de permisos. Pero docker-machine no le dirá nada al respecto, simplemente seguirá reconectándose hasta que se canse.
Solución: Tan pronto como comience la creación de una nueva máquina virtual, ingresamos al directorio ~/.dockermachinemachinesdev y cambiamos los permisos de los archivos indicados, uno por uno.
El propietario del archivo debe ser el usuario actual, con acceso total solo para el usuario actual y el SYSTEM; todos los demás usuarios, incluyendo el grupo de administradores y los propios administradores, deben ser eliminados.
También pueden haber problemas con la conversión de rutas absolutas del formato de Windows a Posix, y con la vinculación de volúmenes que contienen enlaces simbólicos. Pero esa es otra historia.
Fuente: habr.com
