Obrazy dokerów są powoli budowane na rdzeniach systemu Windows / MVC

9

Mam MVC Core 2.2 z wieloma projektami w kontenerach dokerów. Kiedy go uruchamiam, tworzenie obrazów i odpalanie pojemników zajmuje około 4 minut. Używam docker-compose.

Wydaje się to powolne, biorąc pod uwagę, że jest to niewielki rozwój i mam przyzwoity komputer. Wygląda na to, że zasoby nie są używane, ponieważ procesor ma mniej niż 8% podczas kompilacji obrazu, ram nie porusza się, dysk prawie na 0%. GPU 0%. Widzę gwałtowny wzrost internetu przez kilka sekund podczas pobierania obrazu Microsoft, ale to wszystko. Dałem dokerowi następujące zasoby:

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

Jakieś pomysły na wykorzystanie tych zasobów sprzętowych do szybszej kompilacji?

mgPePe
źródło
Czy korzystałeś z obrazów podstawowych systemu Windows lub Linux?
Thomas Brüggemann
Używam obrazów opartych na systemie Linux na komputerze z systemem Windows 10
mgPePe
1
Aby kontenery Linux nie działały natywnie w systemie Windows 10, Docker dla Windows utworzy do tego specjalną maszynę wirtualną, być może spowoduje to opóźnienie. Istnieje funkcja eksperymentalna, ale wciąż jest w fazie rozwoju patrz github.com/moby/moby/issues/33850
Thomas Brüggemann

Odpowiedzi:

2

Wydaje się, że jest to ogólny problem z Dockerem na Windows 10, ponieważ znalazłem w Internecie kilka wątków mówiących o tym problemie i wydaje się, że zasadniczo nie jest on związany z zasobami sprzętowymi przypisanymi do Dockera.

Próbowałem więc wirtualnej instancji systemu Windows 10 i zauważyłem podobne zachowanie w przypadku niektórych kontenerów opartych na systemie Linux przy użyciu przykładowego komponowania dokerów.

Tutaj raportuję kroki, pochodzące ze wszystkich, które znalazłem podczas moich poszukiwań, które naprawdę przyspieszyły operacje podczas moich testów:

  1. Dodaj katalogi rozwojowe (np. Repozytorium git) i dokowane katalogi obrazów na:

  2. Opróżnij dns, wykonując następujące polecenie:

    ipconfig /flushdns
    
  3. Spróbuj zmienić DNS na np. Google One (8.8.8.8 - 8.8.4.4) lub Cloud Fare One (1.1.1.1 - 1.0.0.1) (tutaj, ponieważ miałem już Google DNS, próbowałem w odwrotny sposób wolniejszy DNS i tak naprawdę operacje stały się trochę wolniejsze)

  4. Dodaj wyjątek, jeśli zainstalowany jest inny program antywirusowy (również tutaj najpierw spróbuj je wyłączyć, aby zobaczyć, czy to może pomóc)

  5. Usuń całą obsługę IPV6 i NetBIOS ze wszystkich interfejsów sieciowych

UWAGA: Ktoś radzi, aby odinstalować Docker i zainstalować po tych zastosowaniach, ale nie testowałem, ponieważ zacząłem od nowej instalacji systemu Windows 10.

Mam nadzieję, że te mogą pomóc również w twoim środowisku!

Najlepsze referencje, które znalazłem:

gcallea
źródło
1

sprawdź, czy w katalogu kompilacji jest zbyt wiele plików, czy dcoker musi wysłać wszystkie pliki do demona, które również potrzebują czasu na zakończenie ......

możesz zignorować niechciane pliki za pomocą .dockerignore

Zanim CLI dokera wyśle ​​kontekst do demona dokera, szuka pliku o nazwie .dockerignore w katalogu głównym kontekstu. Jeśli ten plik istnieje, interfejs CLI modyfikuje kontekst, aby wykluczyć pliki i katalogi pasujące do zawartych w nim wzorców. Pomaga to uniknąć niepotrzebnego wysyłania dużych lub wrażliwych plików i katalogów do demona i potencjalnie dodając je do obrazów za pomocą ADD lub COPY.

LinPy
źródło