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

La tarea fue simple, coloqué Docker en mi computadora portátil con Windows en funcionamiento, que ya tiene un zoológico. Instalé Docker Desktop y creé contenedores, todo está bien, pero rápidamente descubrí 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.

La obra se ha detenido, es urgente reparar

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

Al buscar en Google, se descubrió que este error ocurre 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 como esta reparar, con un enlace a Microsoft Knowledge Base Administrar Credential Guard de Windows Defender. La solución es deshabilitar Defender Credential Guard (el elemento 4 de la sección Deshabilitar Credential Guard de Windows Defender me ayudó):

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

Después de reiniciar, Windows le preguntará si realmente desea desactivar Defender Credential Guard. ¡Sí! De esta forma, VMWare Workstation volverá a su funcionamiento normal y nos encontraremos en el mismo lugar que antes de instalar docker.

No he encontrado una solución sobre cómo conciliar Hyper-V y VMWare Workstation, espero que se hagan amigos en las nuevas versiones.

De otra manera

Durante mucho tiempo he sido adicto a VMWare Workstation para varios propósitos, traté de salir con Hyper-V y VirtualBox, pero la funcionalidad no satisfizo mis tareas, y así sigo sentado hasta el día de hoy. Resultó que hay una solución para hacer amigos de VMWare, Docker y VSCode en un entorno de trabajo.

Máquina Docker - le permite ejecutar Docker Engine en un host virtual y conectarse a él de forma remota y local. Y hay un controlador de compatibilidad con VMWare Workstation para ello, enlace a github

No volveré a contar las instrucciones de instalación especialmente, solo la lista de ingredientes:

  1. Caja de herramientas de Docker (Máquina Docker incluido)
  2. Controlador de estación de trabajo Docker Machine VMware
  3. Escritorio Docker

Sí, Docker Desktop, desafortunadamente, también será 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 romper 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 dev virtualka dentro del cual estará Docker.

Esta máquina virtual se puede adjuntar a la GUI de la estación de trabajo de VMWare abriendo el archivo vmx correspondiente. Pero esto no es necesario, porque VSCode ahora necesitará ejecutar un script de PowerShell (por alguna razón, mi docker-machine y docker-machine-driver-vmwareworkstation terminaron en la carpeta bin):

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

VSCode se abrirá para trabajar con el código en la máquina local y la ventana acoplable en la máquina virtual. enchufar Docker para el código de Visual Studio le permite administrar convenientemente los contenedores en una máquina virtual sin ingresar a la consola.

Dificultades:

En el proceso de creación de docker-machine, el proceso se colgó para mí:

Waiting for SSH to be available...

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

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

Se trata de la política de certificados. Al crear una máquina virtual, tendrá un directorio ~.dockermachinemachinesdev 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 permisos. Solo docker-machine no le dirá nada sobre esto, sino que simplemente se volverá a conectar hasta que se aburra.

solución: Tan pronto como comience la creación de una nueva máquina virtual, vamos al directorio ~ .dockermachinemachinesdev y cambiamos los derechos de los archivos especificados, uno a la vez.

El archivo debe ser propiedad del usuario actual, solo el usuario actual y el SISTEMA tienen acceso total, todos los demás usuarios, incluido el grupo de administradores y los propios administradores, deben eliminarse.

También puede haber problemas al convertir rutas absolutas de Windows al formato Posix y vincular volúmenes que contienen enlaces simbólicos. Pero esa es otra historia.

Fuente: habr.com

Añadir un comentario