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

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 , com um link para a base de conhecimento da Microsoft . 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: /dApó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.
— 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,
Não vou detalhar o guia de instalação, apenas a lista de ingredientes:
- ( incluído)
- 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 devUma 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
codeO VSCode será aberto para trabalhar com o código na máquina local e o Docker na máquina virtual. O plugin 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... 
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
