Las imágenes de Docker tardan en construirse en Windows / MVC Core

9

Tengo un MVC Core 2.2 con múltiples proyectos en contenedores acoplables. Cuando lo ejecuto, toma aproximadamente 4 minutos construir las imágenes y encender los contenedores. Estoy usando docker-compose.

Esto parece lento, dado que este es un desarrollo pequeño y tengo una computadora decente. Parece que los recursos no se están utilizando, porque el procesador está por debajo del 8% durante la creación de la imagen, la memoria ram no se mueve, el disco casi al 0%. GPU 0%. Puedo ver que Internet se dispara durante unos segundos mientras se descarga la imagen de Microsoft, pero eso es todo. Le he dado a Docker los siguientes recursos:

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

¿Alguna idea de cómo se pueden usar estos recursos de hardware para acelerar las compilaciones?

mgPePe
fuente
¿Usó Windows o Linux Core Base-Images?
Thomas Brüggemann
Estoy usando imágenes basadas en Linux en una máquina con Windows 10
mgPePe
1
Por lo tanto, los contenedores de Linux no se ejecutarán de forma nativa en Windows 10, Docker para Windows creará una máquina virtual especial para eso, tal vez esto podría causar la demora. Existe una característica experimental, pero todavía está en desarrollo, vea github.com/moby/moby/issues/33850
Thomas Brüggemann

Respuestas:

2

Parece ser un problema general con Docker en Windows 10 porque encontré varios hilos en la web que hablan sobre este problema y, en general, parece no estar relacionado con los recursos de hardware asignados a Docker.

Así que hice algunos intentos en mi instancia virtual de Windows 10 y noté un comportamiento similar al ejecutar algunos contenedores basados ​​en Linux usando un ejemplo docker-compose.

Aquí informo los pasos, de todos los que encontré durante mis búsquedas, que realmente parecían acelerar las operaciones durante mis pruebas:

  1. Agregue desarrollo (por ejemplo, repositorios de git) y directorios de imágenes de docker en:

  2. Flush dns ejecutando el siguiente comando:

    ipconfig /flushdns
    
  3. Intente cambiar DNS a, por ejemplo, Google one (8.8.8.8 - 8.8.4.4) o Cloud Fare one (1.1.1.1 - 1.0.0.1) (Aquí, como ya tenía el DNS de Google, intenté de la manera opuesta configurar un DNS más lento y realmente las operaciones se volvieron un poco más lentas)

  4. Agregue una excepción si hay otro antivirus instalado (también intente primero deshabilitarlo para ver si esto puede ayudar)

  5. Elimine todo el soporte IPV6 y NetBIOS de todas las interfaces de red.

NOTA: Alguien le aconseja que desinstale Docker e instale después de que esto aplique, pero no lo probé porque comencé desde una nueva instalación de Windows 10.

Espero que estos puedan ayudar también en su entorno!

Las mejores referencias que encontré:

gcallea
fuente
1

compruebe si hay demasiados archivos en el directorio de compilación, si hay dcoker necesita enviar todos los archivos al demonio que también necesitan tiempo para terminar ...

puedes ignorar los archivos no deseados usando .dockerignore

Antes de que la CLI de docker envíe el contexto al demonio de docker, busca un archivo llamado .dockerignore en el directorio raíz del contexto. Si este archivo existe, la CLI modifica el contexto para excluir archivos y directorios que coinciden con los patrones que contiene. Esto ayuda a evitar el envío innecesario de archivos y directorios grandes o confidenciales al demonio y, potencialmente, agregarlos a las imágenes mediante AGREGAR o COPIAR.

LinPy
fuente