A tarefa era simples: coloque o Docker no seu laptop de trabalho com o Windows, que já possui um zoológico. Entregue os contêineres criados pelo Docker Desktop, está tudo bem, mas descobriu rapidamente que o VMWare Workstation parou de executar máquinas virtuais com um erro:VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
Levantou-se o trabalho, é necessário corrigir
Usando o Google, constatou-se que esse erro ocorre devido à incompatibilidade do VMWare Workstation e Hyper-V na mesma máquina. O problema é conhecido e existe uma solução VMWare oficial sobre como corrigi-lo , com referência à base de conhecimento Microsoft Manage Windows Defender Credential Guard . A solução é desativar o Defender Credential Guard (o parágrafo 4 da seção Desativar o Windows Defender Credential Guard me ajudou):mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.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 a reinicialização, o Windows perguntará se é realmente possível desativar o Defender Credential Guard. Sim! Portanto, o VMWare Workstation retornará à operação normal e estaremos no mesmo local que antes da instalação da janela de encaixe.Eu nunca encontrei soluções para reconciliar o Hyper-V e o VMWare Workstation, espero que eles façam amigos em novas versões.Outra maneira
Há muito tempo que eu conectei o VMWare Workstation para várias finalidades, tentei acessar o Hyper-V e o VirtualBox, mas a funcionalidade não satisfez minhas tarefas, então continuo sentado. Acontece que existe uma solução para reunir VMWare, Docker e VSCode em um ambiente de trabalho.Docker Machine - permite executar o Docker Engine em um host virtual e conectar-se a ele remotamente e localmente. E para ele, há um driver de compatibilidade com o VMWare Workstation, um link para o GitHubnão recontarei as instruções de instalação, apenas uma lista de ingredientes:- Caixa de ferramentas Docker ( máquina Docker incluída)
- Driver da estação de trabalho VMware para máquina Docker
- Área de trabalho do Docker
Sim, infelizmente, o Docker Desktop também é 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 quebrar o VMWare Workstation novamente.Quero observar imediatamente que tudo funciona bem com um usuário simples; os programas de instalação solicitarão uma escalada de direitos quando necessário, 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 dev
a partir do Boot2Docker, um desenvolvedor virtual será criado dentro do qual haverá um Docker.Você pode conectar esta máquina virtual à interface gráfica do VMWare Workstation, abrindo o arquivo vmx correspondente. Mas isso não é necessário, porque o VSCode agora precisará ser executado pelo PowerShell com um script (por algum motivo, docker-machine e docker-machine-driver-vmwareworkstation estavam na pasta bin):cd ~/bin
./docker-machine env dev | Invoke-Expression
code
O VSCode é aberto para trabalhar com o código na máquina local e na janela de encaixe na máquina virtual. O plug-in Docker for Visual Studio Code permite gerenciar convenientemente contêineres em uma máquina virtual sem subir no console.Dificuldades:No processo de criação da docker-machine, meu processo congela:Waiting for SSH to be available...
E, após algum tempo, terminou com tentativas excessivas de estabelecer uma conexão com a máquina virtual.É tudo sobre a política de certificados. Ao criar uma máquina virtual, você verá o diretório ~ \ .docker \ machine \ machines \ dev 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 acredita que eles têm problemas de direitos de acesso. Somente aqui a docker-machine não informará nada sobre isso, mas simplesmente se reconectará até ficar entediada.Solução: Assim que a criação de uma nova máquina virtual for iniciada, vá para o diretório ~ \ .docker \ machine \ machines \ dev e altere os direitos dos arquivos especificados, um de cada vez.O proprietário do arquivo deve ser o usuário atual, ter acesso total apenas ao usuário atual e ao SYSTEM, todos os outros usuários, incluindo o grupo de administradores e os próprios administradores, devem ser excluídos.Também pode haver problemas com a conversão de caminhos absolutos do formato Windows para Posix e com volumes de ligação que contêm link simbólico. Mas isso é outra história.