Les images Docker sont lentes à s'appuyer sur Windows / MVC Core

9

J'ai un MVC Core 2.2 avec plusieurs projets dans des conteneurs Docker. Lorsque je l'exécute, il faut environ 4 minutes pour créer les images et allumer les conteneurs. J'utilise docker-compose.

Cela semble lent, étant donné qu'il s'agit d'un petit développement et que j'ai un ordinateur décent. Il semble que les ressources ne soient pas utilisées, car le processeur est inférieur à 8% lors de la création de l'image, le ram ne bouge pas, le disque est presque à 0%. GPU 0%. Je peux voir un pic d'Internet pendant quelques secondes pendant que l'image Microsoft est téléchargée, mais c'est tout. J'ai donné à docker les ressources suivantes:

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

Avez-vous des idées sur la façon dont ces ressources matérielles peuvent être utilisées pour accélérer les builds?

mgPePe
la source
Avez-vous utilisé des images de base Windows ou Linux Core?
Thomas Brüggemann
J'utilise des images basées sur Linux sur une machine Windows 10
mgPePe
1
Ainsi, les conteneurs Linux ne fonctionneront pas nativement sous Windows 10, Docker pour Windows créera une machine virtuelle spéciale pour cela, peut-être que cela entraînerait le retard. Il existe une fonctionnalité expérimentale mais elle est toujours en développement voir github.com/moby/moby/issues/33850
Thomas Brüggemann

Réponses:

2

Cela semble être un problème général avec Docker sur Windows 10 car j'ai trouvé plusieurs threads sur le Web parlant de ce problème et il ne semble généralement pas lié aux ressources matérielles affectées à Docker.

J'ai donc fait quelques essais sur mon instance virtuelle Windows 10 et j'ai remarqué un comportement similaire en exécutant certains conteneurs basés sur Linux en utilisant un exemple docker-compose.

Ici, je signale des étapes, de toutes celles que j'ai trouvées lors de mes recherches, qui semblaient vraiment accélérer les opérations lors de mes tests:

  1. Ajoutez des répertoires de développement (par exemple git repos) et docker sur:

  2. Flush dns exécutant la commande suivante:

    ipconfig /flushdns
    
  3. Essayez de changer DNS par exemple pour Google one (8.8.8.8 - 8.8.4.4) ou Cloud Fare one (1.1.1.1 - 1.0.0.1) (ici, comme j'avais déjà le DNS Google, j'ai essayé de la manière opposée de définir un DNS plus lent et vraiment les opérations sont devenues un peu plus lentes)

  4. Ajouter une exception si un autre antivirus est installé (également ici, essayez d'abord de les désactiver pour voir si cela peut vous aider)

  5. Supprimez tout le support IPV6 et NetBIOS de toutes les interfaces réseau

REMARQUE: Quelqu'un vous conseille de désinstaller Docker et d'installer après cela, mais je n'ai pas testé car j'ai commencé à partir d'une nouvelle installation de Windows 10.

J'espère que cela peut aussi aider votre environnement!

Meilleures références que j'ai trouvées:

gcallea
la source
1

vérifier s'il y a trop de fichiers dans le répertoire de construction, s'il y a dcoker besoin d'envoyer tous les fichiers au démon qui a aussi besoin de temps pour finir ......

vous pouvez ignorer les fichiers indésirables en utilisant .dockerignore

Avant que la CLI docker envoie le contexte au démon docker, elle recherche un fichier nommé .dockerignore dans le répertoire racine du contexte. Si ce fichier existe, la CLI modifie le contexte pour exclure les fichiers et répertoires qui correspondent aux modèles qu'il contient. Cela permet d'éviter d'envoyer inutilement des fichiers et des répertoires volumineux ou sensibles au démon et de les ajouter potentiellement aux images à l'aide d'ADD ou de COPY.

LinPy
la source