Docker e VMWare Workstation em uma única máquina Windows.

A tarefa era simples, instalar o Docker no meu laptop de trabalho com Windows, que já estava cheio de coisas. Instalei o Docker Desktop, criei contêineres, tudo certo, mas logo descobri que o VMWare Workstation parou de iniciar as máquinas virtuais com um erro:

O VMware Workstation e o Device/Credential Guard não são compatíveis. O VMware Workstation pode ser executado após desativar o Device/Credential Guard.

O trabalho parou, preciso consertar isso urgentemente

Docker e VMWare Workstation em uma única máquina Windows.

Através de uma pesquisa no Google, descobri que esse erro ocorre devido à incompatibilidade entre o VMWare Workstation e o Hyper-V em uma mesma máquina. O problema é conhecido e existe uma solução oficial da VMWare para isso consertar, com um link para a base de conhecimento da Microsoft Gerenciar o Windows Defender Credential Guard. A solução consiste em desativar o Defender Credential Guard (a seção 4 do capítulo Desativar o Windows Defender Credential Guard me ajudou):

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

Após reiniciar, o Windows perguntará se você realmente deseja desativar o Defender Credential Guard. Sim! Assim, o VMWare Workstation voltará a funcionar normalmente, e estaremos na mesma situação de antes da instalação do Docker.

Não consegui encontrar soluções para como conciliar o Hyper-V e o VMWare Workstation; espero que em novas versões eles consigam se entender.

Outra solução

Já faz tempo que estou usando o VMWare Workstation para diversos fins; tentei mudar para o Hyper-V e VirtualBox, mas suas funcionalidades não atenderam às minhas necessidades, então continuo com o VMWare até hoje. Descobri que existe uma solução para integrar o VMWare, Docker e VSCode em um único ambiente de trabalho.

Docker Machine — permite executar o Docker Engine em um host virtual e se conectar a ele tanto remotamente quanto localmente. E existe um driver de compatibilidade com o VMWare Workstation, link para o GitHub

Não vou detalhar o guia de instalação, apenas a lista de ingredientes:

  1. Docker Toolbox (Docker Machine incluído)
  2. Docker Machine VMware Workstation Driver
  3. Docker Desktop

Sim, o Docker Desktop, infelizmente, também será necessário. Se você o desinstalou, instale-o novamente, mas desta vez desmarcando a opção de fazer alterações no SO, para não quebrar o VMWare Workstation novamente.

Quero ressaltar que tudo funciona perfeitamente com um usuário padrão; os instaladores solicitarão elevação de privilégios quando necessário, mas todos os comandos no prompt de comando e scripts são executados com o usuário atual.

No final, o comando é:

$ docker-machine create --driver=vmwareworkstation dev

Uma máquina virtual dev será criada a partir do Boot2Docker, que conterá o Docker.

Essa máquina virtual pode ser anexada à interface gráfica do VMWare Workstation, abrindo o respectivo arquivo vmx. Mas isso não é obrigatório, pois agora será necessário iniciar o VSCode com um script do PowerShell (por algum motivo, o docker-machine e o docker-machine-driver-vmwareworkstation acabaram na pasta bin):

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

O VSCode será aberto para trabalhar com o código na máquina local e o Docker na máquina virtual. O plugin Docker for Visual Studio Code permite gerenciar containers na máquina virtual sem precisar ir ao console.

Desafios:

Durante o processo de criação do docker-machine, tive um travamento:

Waiting for SSH to be available...

Docker e VMWare Workstation em uma única máquina Windows.

Após algum tempo, a tentativa de conexão com a máquina virtual ultrapassou o limite.

O problema está na política de certificados. Ao criar a máquina virtual, você terá um diretório ~/.dockermachinemachinesdev onde estarão os arquivos de certificado para conexão via SSH: id_rsa, id_rsa.pub. O OpenSSH pode se recusar a usá-los, pois considera que há problemas com as permissões. No entanto, o docker-machine não informa nada sobre isso, apenas tenta se reconectar até se cansar.

Solução: Assim que a criação de uma nova máquina virtual começar, acesse o diretório ~/.dockermachinemachinesdev e altere as permissões dos arquivos, um a um.

O proprietário do arquivo deve ser o usuário atual, o acesso completo deve ser apenas do usuário atual e do SYSTEM, todos os outros usuários, incluindo o grupo de administradores e os próprios administradores devem ser removidos.

Também podem surgir problemas com a conversão de caminhos absolutos do formato Windows para Posix, e com a montagem de volumes que contêm links simbólicos. Mas essa já é outra história.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster