Docker e VMWare Workstation na mesma máquina Windows

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 GitHub

não recontarei as instruções de instalação, apenas uma lista de ingredientes:

  1. Caixa de ferramentas Docker ( máquina Docker incluída)
  2. Driver da estação de trabalho VMware para máquina Docker
  3. Á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.

All Articles