Docker y VMWare Workstation en la misma máquina con Windows

La tarea era simple: coloque Docker en su computadora portátil con Windows, que ya tiene un zoológico. Entregó contenedores creados por Docker Desktop, todo está bien, pero descubrí rápidamente que VMWare Workstation dejó de ejecutar máquinas virtuales con un error:

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


El trabajo se levantó, urgente necesidad de ser reparado




Al usar Google, se descubrió que este error se produce debido a la incompatibilidad de VMWare Workstation e Hyper-V en la misma máquina. El problema es conocido y existe una solución oficial de VMWare sobre cómo solucionarlo , con referencia a la base de conocimiento de Microsoft Manage Windows Defender Credential Guard . La solución es deshabilitar Defender Credential Guard (el párrafo 4 de la sección Deshabilitar Windows Defender Credential Guard me ayudó):

mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.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

Después del reinicio, Windows preguntará si realmente es posible desactivar el Defender Credential Guard. ¡Si! Por lo tanto, VMWare Workstation volverá a la operación normal, y estaremos en el mismo lugar que antes de instalar la ventana acoplable.

Nunca encontré soluciones para conciliar Hyper-V y VMWare Workstation, espero que hagan amigos en nuevas versiones.

De otra manera


Durante mucho tiempo me enganché a VMWare Workstation para varios propósitos, traté de usar Hyper-V y VirtualBox, pero la funcionalidad no satisfizo mis tareas, por lo que todavía me siento. Resultó que hay una solución para reunir VMWare, Docker y VSCode en un entorno de trabajo.

Docker Machine : le permite ejecutar Docker Engine en un host virtual y conectarse a él de forma remota y local. Y para él hay un controlador de compatibilidad con VMWare Workstation, un enlace a GitHub

que no volveré a contar particularmente las instrucciones de instalación, solo una lista de ingredientes:

  1. Docker Toolbox ( Máquina Docker incluida)
  2. Docker Machine VMware Workstation Driver
  3. Escritorio Docker

Sí, Docker Desktop, desafortunadamente, también es necesario. Si lo demolió, instálelo nuevamente, pero esta vez eliminando la casilla de verificación sobre cómo realizar cambios en el sistema operativo para no interrumpir VMWare Workstation nuevamente.

Quiero señalar de inmediato que todo funciona bien desde un usuario simple, los programas de instalación solicitarán una escalada de derechos cuando lo necesiten, pero todos los comandos en la línea de comandos y los scripts se ejecutan desde el usuario actual.

Como resultado, el equipo:
$ docker-machine create --driver=vmwareworkstation dev

desde Boot2Docker se creará un desarrollador virtual dentro del cual habrá un Docker.

Puede adjuntar esta máquina virtual a la interfaz gráfica de VMWare Workstation abriendo el archivo vmx correspondiente. Pero esto no es necesario, porque PowerShell ahora deberá ejecutar VSCode con un script (por alguna razón, docker-machine y docker-machine-driver-vmwareworkstation resultó estar en la carpeta bin):

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

VSCode se abre para trabajar con código en la máquina local y la ventana acoplable en la máquina virtual. El complemento Docker para Visual Studio Code le permite administrar convenientemente contenedores en una máquina virtual sin subir a la consola.

Dificultades:

en el proceso de creación de docker-machine, mi proceso se congela:

Waiting for SSH to be available...



Y después de un tiempo terminó con intentos excesivos de establecer una conexión con la máquina virtual.

Se trata de la política de los certificados. Al crear una máquina virtual, verá el directorio ~ \ .docker \ machine \ machines \ dev en este directorio, habrá archivos de certificado para conectarse a través de SSH: id_rsa, id_rsa.pub. OpenSSH puede negarse a usarlos porque cree que tienen problemas de derechos de acceso. Solo aquí la máquina acoplable no le dirá nada sobre esto, sino que simplemente se volverá a conectar hasta que se aburra.

Solución: Tan pronto como se inicie la creación de una nueva máquina virtual, vaya al directorio ~ \ .docker \ machine \ machines \ dev y cambie los derechos de los archivos especificados, uno a la vez.

El propietario del archivo debe ser el usuario actual, solo se debe eliminar el acceso completo al usuario actual y al SISTEMA, todos los demás usuarios, incluido el grupo de administradores y los propios administradores.

También puede haber problemas con la conversión de rutas absolutas del formato de Windows a Posix, y con volúmenes vinculantes que contienen un enlace simbólico. Pero esa es otra historia.

All Articles