Docker-Images bauen nur langsam auf Windows / MVC Core auf

9

Ich habe einen MVC Core 2.2 mit mehreren Projekten in Docker-Containern. Wenn ich es starte, dauert es ungefähr 4 Minuten, um die Bilder zu erstellen und die Container zu starten. Ich benutze docker-compose.

Dies scheint langsam zu sein, da dies eine kleine Entwicklung ist und ich einen anständigen Computer habe. Es scheint, dass die Ressourcen nicht verwendet werden, da der Prozessor während der Image-Erstellung unter 8% liegt, der RAM nicht rührt und die Festplatte fast bei 0% liegt. GPU 0%. Ich kann einige Sekunden lang sehen, wie das Internet spitzt, während das Microsoft-Image heruntergeladen wird, aber das war's. Ich habe Docker die folgenden Ressourcen gegeben:

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

Irgendwelche Ideen, wie diese Hardwareressourcen verwendet werden können, um Builds schneller zu machen?

mgPePe
quelle
Haben Sie Windows oder Linux Core Base-Images verwendet?
Thomas Brüggemann
Ich verwende Linux-basierte Images auf einem Windows 10-Computer
mgPePe
1
Damit Linux-Container unter Windows 10 nicht nativ ausgeführt werden, erstellt Docker für Windows eine spezielle VM dafür. Möglicherweise würde dies die Verzögerung verursachen. Es gibt ein experimentelles Feature, das sich jedoch noch in der Entwicklung befindet. Siehe github.com/moby/moby/issues/33850
Thomas Brüggemann,

Antworten:

2

Es scheint ein allgemeines Problem mit Docker unter Windows 10 zu sein, da ich im Web mehrere Threads gefunden habe, die über dieses Problem sprechen, und es scheint im Allgemeinen nicht mit der Docker zugewiesenen Hardwareressource zu tun zu haben.

Daher habe ich einige Versuche mit meiner virtuellen Windows 10-Instanz durchgeführt und ein ähnliches Verhalten beim Ausführen einiger Linux-basierter Container mithilfe eines Beispiels für Docker-Compose festgestellt.

Hier berichte ich Schritte von allen, die ich während meiner Suche gefunden habe und die die Operationen während meiner Tests wirklich zu beschleunigen schienen:

  1. Fügen Sie Entwicklungsverzeichnisse (z. B. Git-Repos) und Docker-Bildverzeichnisse hinzu auf:

  2. Flush dns führt den folgenden Befehl aus:

    ipconfig /flushdns
    
  3. Versuchen Sie, DNS in beispielsweise Google One (8.8.8.8 - 8.8.4.4) oder Cloud Fare One (1.1.1.1 - 1.0.0.1) zu ändern. (Da ich bereits Google DNS hatte, habe ich in umgekehrter Weise versucht, a einzustellen langsameres DNS und wirklich Operationen wurden etwas langsamer)

  4. Fügen Sie eine Ausnahme hinzu, wenn ein anderes Antivirenprogramm installiert ist (versuchen Sie auch hier, diese zu deaktivieren, um festzustellen, ob dies hilfreich sein kann).

  5. Entfernen Sie alle IPV6-Unterstützung und NetBIOS von allen Netzwerkschnittstellen

HINWEIS: Es wird empfohlen, Docker zu deinstallieren und danach zu installieren, aber ich habe nicht getestet, da ich mit einer neuen Windows 10-Installation begonnen habe.

Hoffe, diese können auch in Ihrer Umgebung helfen!

Beste Referenzen, die ich gefunden habe:

gcallea
quelle
1

Überprüfen Sie, ob sich zu viele Dateien im Build-Verzeichnis befinden. Wenn dcoker vorhanden ist, müssen alle Dateien an den Daemon gesendet werden, für deren Fertigstellung auch Zeit benötigt wird.

Sie können die unerwünschten Dateien mit ignorieren .dockerignore

Bevor die Docker-CLI den Kontext an den Docker-Daemon sendet, sucht sie im Stammverzeichnis des Kontexts nach einer Datei mit dem Namen .dockerignore. Wenn diese Datei vorhanden ist, ändert die CLI den Kontext, um Dateien und Verzeichnisse auszuschließen, die mit den darin enthaltenen Mustern übereinstimmen. Auf diese Weise wird vermieden, dass große oder vertrauliche Dateien und Verzeichnisse unnötig an den Dämon gesendet und möglicherweise mithilfe von ADD oder COPY zu Bildern hinzugefügt werden.

LinPy
quelle