A tarefa era simples: instalar o Docker no meu laptop de trabalho com Windows, que já tinha um zoológico. Instalei o Docker Desktop e criei contêineres, tudo estava bem, mas logo descobri que o VMWare Workstation parou de iniciar máquinas virtuais com o seguinte erro:
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
A obra parou, é urgente reparar

Ao pesquisar no Google, descobriu-se que esse erro ocorre devido à incompatibilidade do VMWare Workstation e do Hyper-V na mesma máquina. O problema é conhecido e existe uma solução VMWare oficial como esta , com um link para a Base de Conhecimento da Microsoft A solução é desativar o Defender Credential Guard (o item 4 da seção Desativar me ajudou). Windows Guardião de Credenciais do Defensor):
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 Windows Você será questionado se realmente deseja desativar o Defender Credential Guard. Sim! Isso fará com que o VMWare Workstation volte a funcionar normalmente e tudo estará como estava antes da instalação do Docker.
Não encontrei uma solução de como conciliar Hyper-V e VMWare Workstation, espero que eles se tornem amigos em novas versões.
Outra maneira
Há muito tempo sou viciado em VMWare Workstation para vários fins, tentei sair no Hyper-V e no VirtualBox, mas a funcionalidade não satisfez minhas tarefas, por isso estou sentado até hoje. Descobriu-se que existe uma solução para fazer amigos VMWare, Docker e VSCode em um ambiente de trabalho.
- permite que você execute o Docker Engine em um host virtual e conecte-se a ele remotamente e localmente. E há um driver de compatibilidade VMWare Workstation para ele,
Não vou recontar especialmente as instruções de instalação, apenas a lista de ingredientes:
- ( incluído)
- Área de trabalho do Docker
Sim, o Docker Desktop, infelizmente, também será necessário. Se você o demoliu, instale-o novamente, mas desta vez removendo a caixa de seleção sobre como fazer alterações no sistema operacional, para não interromper o VMWare Workstation novamente.
Quero observar desde já que tudo funciona bem com um simples usuário, os programas de instalação vão pedir escalonamento de direitos quando precisarem, mas todos os comandos na linha de comando e scripts são executados pelo usuário atual.
Como resultado, a equipe:
$ docker-machine create --driver=vmwareworkstation devdo Boot2Docker, um dev virtualka será criado dentro do qual será o Docker.
Essa máquina virtual pode ser anexada à GUI da estação de trabalho VMWare abrindo o arquivo vmx correspondente. Mas isso não é necessário, porque o VSCode agora precisará executar um script do PowerShell (por algum motivo, meu docker-machine e docker-machine-driver-vmwareworkstation acabaram na pasta bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeO VSCode será aberto para trabalhar com código na máquina local e docker na máquina virtual. plugar permite que você gerencie convenientemente contêineres em uma máquina virtual sem entrar no console.
Dificuldades:
No processo de criação do docker-machine, o processo travou para mim:
Waiting for SSH to be available... 
E depois de um tempo acabou com o excesso de tentativas de estabelecer conexão com a máquina virtual.
É tudo sobre a política de certificados. Ao criar uma máquina virtual, você terá um diretório ~.dockermachinemachinesdev neste diretório haverá arquivos de certificado para conexão via SSH: id_rsa, id_rsa.pub. O OpenSSH pode se recusar a usá-los porque acha que eles têm problemas de permissão. Apenas a docker-machine não dirá nada sobre isso, mas simplesmente se reconectará até ficar entediada.
solução: Assim que a criação de uma nova máquina virtual começa, vamos para o diretório ~ .dockermachinemachinesdev e alteramos os direitos dos arquivos especificados, um de cada vez.
O arquivo deve pertencer ao usuário atual, apenas o usuário atual e o SISTEMA têm acesso total, todos os outros usuários, incluindo o grupo de administradores e os próprios administradores, devem ser excluídos.
Também podem ocorrer problemas com a conversão de caminhos absolutos de Windows Formato Posix e encadernação em volume contendo links simbólicos. Mas isso é outra história.
Fonte: habr.com
