Como usar o Vagrant e o Docker-for-Windows em um sistema Hyper-V?

12

Naquela época, eu estava usando o VirtualBox (VB) e o Vagrant (V) para executar VMs. Desde que instalei o Docker para Windows (DfW) e execute o V, o VB reclama do Hyper-V (HV) .

[user@localhost ~]$ vagrant up
Stderr: VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component
ConsoleWrap, interface IConsole

Embora este link indique que V suporta HV, a mensagem de erro acima é contraditória. Por que o VB parece incompatível com o HV, por que o V diz que ele suporta o HV e como evitar que o HV precise ser desativado para usar o V novamente.

| Product    | Version |
|:-----------|--------:|
| Vagrant    |   2.0.1 |
| VirtualBox |   5.2.4 |
| Windows    |      10 | 

Discussão

A sugestão de ativar e desativar o Hyper-V não é a solução preferida, pois consome muito tempo.

Se fosse possível executar V e DfW no mesmo sistema, substituindo o VB, isso poderia ser uma opção.

030
fonte

Respostas:

9

Confirmado por esta resposta no SO, fazendo referência ao technet da Microsoft, uma vez ativado o Hyper-V, mascara as instruções do VT-X do processador para o sistema operacional em cima dele e o Windows é executado como um convidado.

O Docker para Windows precisa do hyper-V para funcionar, portanto, desativá-lo não é realmente uma opção.

Não há como ter uma caixa virtual em execução no Hyper-V e isso é normal: você não deve executar um hipervisor dentro de um hipervisor, eles lutam para orquestrar acesso a hardware.

A melhor solução, na minha opinião, é criar uma máquina virtual hyper-V a partir de um vagrant com o provedor hyper-V, em vez de máquinas de caixa virtual, dessa forma, você pode criar VM ou contêiner na mesma sessão.

Nota lateral, o vagrant já tem uma observação sobre isso na página de documentação do provedor hyper-v (encontrada ao pesquisar no link para adicionar acima):

Aviso : a ativação do Hyper-V fará com que o VirtualBox, VMware e qualquer outra tecnologia de virtualização não funcionem mais. Consulte esta postagem no blog para obter uma maneira fácil de criar uma entrada de inicialização para inicializar o Windows sem o Hyper-V ativado, se houver momentos em que você precisará de outros hipervisores.

Tensibai
fonte
0

Ao lado do Vagrant, você pode usar o 'Docker Toolbox' antigo da Legacy, em vez do 'Docker for Windows'. Isso significa que o Docker ficará lento, pois acredito que seja executado em uma VM Linux. https://docs.docker.com/toolbox/toolbox_install_windows/ Fora isso, sim, eu reiniciei meu computador com tudo o que preciso do HyperV for Docker ou removo-o quando eu quiser.

armyofda12mnkeys
fonte