O contêiner hello-world do Docker não inicia no Windows Server 2016 em cima do VMWare

1

Estou tentando instalar e executar o Docker em uma VM do Windows para entender melhor o tempo de execução do trabalho de recebimento de dados, e estou lidando com os problemas que estão iniciando o contêiner hello-world .

Ambiente:

  • hardware virtual VMWare:
    • 4 GB de RAM
    • CPU Intel Xenon (2 núcleos)
  • Windows Server 2016 Standard (versão 1607)
  • Algumas considerações sobre antivírus e firewall (estou obtendo mais informações sobre elas)

Saída de docker version :

Client:
 Version:      17.06.2-ee-6
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   e75fdb8
 Built:        Mon Nov 27 22:46:09 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.06.2-ee-6
 API version:  1.30 (minimum version 1.24)
 Go version:   go1.8.3
 Git commit:   e75fdb8
 Built:        Mon Nov 27 22:55:16 2017
 OS/Arch:      windows/amd64
 Experimental: false

O que funcionou:

O que não tem:

Executando qualquer contêiner. Nós tentamos alguns:

  • hello-world:nanoserver
  • hello-world:latest
  • microsoft/nanoserver:latest
  • microsoft/windowsservercore:latest

O que eu já tentei (sem sucesso):

  • Relaxando nossas configurações de política de grupo
  • Ativando o componente opcional do Hyper-V para Windows

O que realmente acontece:

Quando tento iniciar um contêiner usando docker run {container-name-here} , o PowerShell fica suspenso por um período substancial (alguns minutos) e imprime a seguinte mensagem:

C:\Program Files\docker\docker.exe: Error response from daemon: container
    {container-id-here} encountered an error during Start: failure in a
    Windows system call: This operation returned because the timeout
    period expired. (0x5b4).

No docker events log, recebo as seguintes mensagens ao mesmo tempo:

2018-04-18T09:36:27.881680400-04:00 container create {container-id-here} (image=hello-world:nanoserver, name=confident_ardinghelli)
2018-04-18T09:36:27.883680800-04:00 container attach {container-id-here} (image=hello-world:nanoserver, name=confident_ardinghelli)
2018-04-18T09:36:28.753726900-04:00 network connect {network-id-here} (container={container-id-here}, name=nat, type=nat)
2018-04-18T09:40:21.373395500-04:00 network disconnect {network-id-here}(container={container-id-here}, name=nat, type=nat)

Recebemos a mensagem de tempo limite entre o network connect e o network disconnect .

As referências que encontrei na minha pesquisa ( aqui e aqui ) indica que isso pode ser um problema de antivírus, mas não consegui encontrar nenhuma documentação sobre como confirmar se é um problema de antivírus ou qual componente de antivírus pode estar com o problema de desabilitar o antivírus e tentar novamente. Eu estou trabalhando para ficar com as pessoas que têm acesso a essa parte do sistema e tentando novamente, eu vou atualizar com resultados.

Então, o que estou realmente perguntando?

  • Alguém viu algo semelhante ou semelhante antes? Que passos você foi capaz de diagnosticar a causa raiz e qual foi o problema no seu caso?
  • Existem outros registros do Docker ou do Windows que eu deveria analisar para melhor diagnosticar a causa do problema?
  • Algum outro "tiros no escuro" devemos tentar? Estamos ficando sem ideias depois de passarmos pela nossa depuração de segurança.

Atualização (2018-4-20):

Conversamos com a equipe de segurança e passamos pela ativação e desativação de vários componentes antivírus. Quando desativamos o McAfee Host IPS (HIPS), conseguimos iniciar qualquer um de nossos contêineres, conforme o esperado. Quando ligamos novamente, os recipientes quebram de novo! Encontramos um alerta no log do HIPS para uma leitura de registro negada que corresponde ao tempo da nossa sessão de depuração e rastreamos esse acesso de registro de volta ao processo docker.exe usando Monitor de processos da Microsoft Sysinternals . Parece que temos o nosso culpado!

Vou relatar depois que adicionarmos uma entrada à lista de permissões para a regra e confirmarmos a correção.

    
por Bruce Pulley 18.04.2018 / 21:04

1 resposta

1

A solução

Nesse caso, o HIPS (Host Intrusion Prevention Service) da McAfee foi o problema que impedia a execução do Docker. O McAfee HIPS fornece várias regras de monitoramento de invasão, e uma delas impedindo o acesso a registros indevidos foi acionada. Desabilitamos a regra para docker.exe , e está tranquilo desde então!

Etapas para depurar

Identificamos isso depurando o Docker desativando os componentes de segurança individuais até que o docker pudesse funcionar e, em seguida, reativando tudo, exceto o HIPS, para verificar se nada mais estava interferindo. Em seguida, reativamos o HIPS, reproduzimos o problema e verificamos os logs do HIPS em busca de um alerta que correspondesse ao tempo.

O Docker CLI estava tentando acessar as seguintes chaves de registro e receber acesso negado:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\docker.exe

Usamos o Process Monitor da Microsoft Sysinternals para verificar se o acesso ao registro estava associado à janela de encaixe. exe.

Por fim, desativamos a regra do HIPS para docker.exe e agora podemos executar com sucesso contêineres arbitrários.

    
por 27.04.2018 / 21:03