Docker e VMWare Workstation na mesma máquina Windows

A tarefa era simples, colocar o Docker no meu laptop Windows funcional, que já tem um zoológico. Instalei o Docker Desktop e criei containers, está tudo ok, mas descobri rapidamente que o VMWare Workstation parou de rodar 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.

A obra parou, é urgente reparar

Docker e VMWare Workstation na mesma máquina Windows

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 consertar, com um link para a Base de Conhecimento da Microsoft Gerenciar o Windows Defender Credential Guard. A solução é desativar o Defender Credential Guard (o item 4 da seção 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

Depois de reiniciar, o Windows perguntará se você realmente deseja desativar o Defender Credential Guard. Sim! Dessa forma, o VMWare Workstation retornará à operação normal e nos encontraremos no mesmo local de 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.

Máquina Docker - 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, link para github

Não vou recontar especialmente as instruções de instalação, apenas a lista de ingredientes:

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

do 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
code

O VSCode será aberto para trabalhar com código na máquina local e docker na máquina virtual. plugar Docker para Visual Studio Code 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...

Docker e VMWare Workstation na mesma máquina Windows

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 pode haver problemas na conversão de caminhos absolutos do Windows para o formato Posix e na vinculação de volumes contendo links simbólicos. Mas isso é outra história.

Fonte: habr.com

Adicionar um comentário