Docker e VMWare Workstation na mesma máquina Windows

A tarefa foi sinxela, instalar Docker no meu portátil de traballo con Windows, que xa ten un zoolóxico. Instalei Docker Desktop, creei contedores, todo estaba ben, pero axiña descubrín que VMWare Workstation deixou de lanzar máquinas virtuais co erro:

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

Os traballos pararon, hai que arranxalos con urxencia

Docker e VMWare Workstation na mesma máquina Windows

Ao buscar en Google, descubriuse que este erro ocorre debido á incompatibilidade de VMWare Workstation e Hyper-V na mesma máquina. O problema é coñecido e hai unha solución oficial de VMWare como esta para arranxar, cunha ligazón á base de coñecemento de Microsoft Xestionar Windows Defender Credential Guard. A solución é desactivar Defender Credential Guard (o punto 4 da sección Desactivar Windows Defender Credential Guard axudoume):

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

Despois de reiniciar, Windows preguntarache se queres desactivar Defender Credential Guard. Si! Deste xeito, VMWare Workstation volverá ao funcionamento normal e estaremos no mesmo lugar que antes de instalar docker.

Aínda non atopei unha solución para conciliar Hyper-V e VMWare Workstation, espero que se fagan amigos nas novas versións.

Outra forma

Estiven enganchado a VMWare Workstation durante moito tempo para varios propósitos, tentei cambiar a Hyper-V e VirtualBox, pero a funcionalidade non satisfacía as miñas necesidades e aínda estou atascado ata hoxe. Resultou que hai unha solución sobre como combinar VMWare, Docker e VSCode nun só ambiente de traballo.

Máquina Docker — permítelle executar Docker Engine nun host virtual e conectarse a el tanto de forma remota como local. E hai un controlador de compatibilidade VMWare Workstation para iso, ligazón a github

Non vou contar especialmente as instrucións de instalación, só a lista de ingredientes:

  1. Caixa de ferramentas Docker (Máquina Docker incluído)
  2. Controlador de estación de traballo de Docker Machine VMware
  3. Escritorio Docker

Si, Docker Desktop, por desgraza, tamén será necesario. Se o demoleches, instálao de novo, pero esta vez elimina a caixa de verificación sobre facer cambios no sistema operativo, para non romper VMWare Workstation de novo.

Gustaríame notar de inmediato que todo funciona ben desde un usuario sinxelo, os programas de instalación pedirán unha escalada de dereitos cando o necesiten, pero todos os comandos da liña de comandos e os scripts execútanse dende o usuario actual.

Como resultado, o comando:

$ docker-machine create --driver=vmwareworkstation dev

crearase unha máquina virtual de desenvolvemento dende Boot2Docker, dentro da cal se instalará Docker.

Esta máquina virtual pódese conectar á interface gráfica de VMWare Workstation abrindo o ficheiro vmx correspondente. Pero isto non é necesario, porque PowerShell terá que iniciar agora VSCode como un script (por algún motivo, docker-machine e docker-machine-driver-vmwareworkstation acabaron no cartafol bin):

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

VSCode abrirase para traballar co código na máquina local e Docker na máquina virtual. Enchufar Docker para Visual Studio Code permítelle xestionar comodamente os contedores nunha máquina virtual sen entrar na consola.

Dificultades:

Durante a creación de docker-machine, o meu proceso conxelouse:

Waiting for SSH to be available...

Docker e VMWare Workstation na mesma máquina Windows

E despois dun tempo rematou con máis intentos de establecer unha conexión coa máquina virtual.

Todo depende da política de certificados. Ao crear unha máquina virtual, terás un directorio ~.dockermachinemachinesdev. Neste directorio haberá ficheiros de certificados para conectarse mediante SSH: id_rsa, id_rsa.pub. OpenSSH pode negarse a usalos porque pensa que teñen problemas de permisos. Só docker-machine non che dirá nada sobre isto, simplemente volverá conectarse ata que se aburre.

solución: En canto comece a creación dunha nova máquina virtual, vai ao directorio ~.dockermachinemachinesdev e cambia os dereitos dos ficheiros especificados, un a un.

O propietario do ficheiro debe ser o usuario actual, só o usuario actual e o SISTEMA teñen acceso total, todos os demais usuarios, incluído o grupo de administradores e os propios administradores, deben ser eliminados.

Tamén pode haber problemas coa conversión de camiños absolutos do formato Windows a Posix e con volumes de encadernación que conteñan unha ligazón simbólica. Pero esa é outra historia.

Fonte: www.habr.com

Engadir un comentario