Imagens do Docker estão demorando para serem construídas no Windows / MVC Core

9

Eu tenho um MVC Core 2.2 com vários projetos em contêineres de encaixe. Quando o executo, são necessários aproximadamente 4 minutos para criar as imagens e acionar os contêineres. Eu estou usando docker-compose.

Isso parece lento, já que esse é um desenvolvimento pequeno e eu tenho um computador decente. Parece que os recursos não estão sendo usados, porque o processador está abaixo de 8% durante a criação da imagem, a ram não se move, o disco quase a 0%. GPU 0%. Eu posso ver a Internet disparando por alguns segundos enquanto a imagem da Microsoft é baixada, mas é isso. Dei ao docker os seguintes recursos:

Cores: 8
RAM: 8GB
SWAP: 3gb
Disk Image Size: 64GB (30.5 GB used)

Alguma idéia de como esses recursos de hardware podem ser usados ​​para tornar as construções mais rápidas?

mgPePe
fonte
Você usou imagens básicas do Windows ou Linux?
Thomas Brüggemann
Estou usando imagens baseadas em Linux na máquina Windows 10
mgPePe 19/02
11
Para que os contêineres do Linux não sejam executados nativamente no Windows 10, o Docker para Windows criará uma VM especial para isso, talvez isso cause o atraso. Existe um recurso experimental, mas ele ainda está em desenvolvimento, consulte github.com/moby/moby/issues/33850
Thomas Brüggemann

Respostas:

2

Parece ser um problema geral com o Docker no Windows 10, porque eu encontrei vários threads na web falando sobre esse problema e, geralmente, não está relacionado ao recurso de hardware atribuído ao Docker.

Portanto, fiz algumas tentativas na minha instância virtual do Windows 10 e notei um comportamento semelhante ao executar alguns contêineres baseados em Linux usando um exemplo de docker-compose.

Aqui, relato etapas, de todas as que encontrei durante minhas pesquisas, que realmente pareciam acelerar as operações durante meus testes:

  1. Adicione diretórios de desenvolvimento (por exemplo, git repos) e imagem de janela de encaixe em:

  2. Libere o DNS executando o seguinte comando:

    ipconfig /flushdns
    
  3. Tente mudar o DNS para, por exemplo, Google one (8.8.8.8 - 8.8.4.4) ou Cloud Fare one (1.1.1.1 - 1.0.0.1) (aqui, como eu já tinha o DNS do Google, tentei da maneira oposta, definindo um DNS mais lento e realmente as operações se tornaram um pouco mais lentas)

  4. Adicione exceção se qualquer outro antivírus estiver instalado (também tente aqui primeiro desativá-los para ver se isso pode ajudar)

  5. Remova todo o suporte IPV6 e NetBIOS de todas as interfaces de rede

NOTA: Alguém aconselhou desinstalar o Docker e instalar após a aplicação, mas não testei porque iniciei em uma nova instalação do Windows 10.

Espero que estes possam ajudar também no seu ambiente!

Melhores referências que encontrei:

gcallea
fonte
1

verifique se há muitos arquivos no diretório build, se o dcoker precisa enviar todos os arquivos para o daemon, que também precisam de tempo para concluir ......

você pode ignorar os arquivos indesejados usando .dockerignore

Antes de a CLI do docker enviar o contexto para o daemon do docker, ele procura um arquivo chamado .dockerignore no diretório raiz do contexto. Se esse arquivo existir, a CLI modifica o contexto para excluir arquivos e diretórios que correspondem aos padrões nele. Isso ajuda a evitar o envio desnecessário de arquivos e diretórios grandes ou confidenciais ao daemon e a possibilidade de adicioná-los às imagens usando ADD ou COPY.

LinPy
fonte