Образы Docker медленно собираются на Windows / MVC Core

9

У меня есть MVC Core 2.2 с несколькими проектами в докер-контейнерах. Когда я запускаю его, требуется около 4 минут для создания изображений и запуска контейнеров. Я использую docker-compose.

Это кажется медленным, учитывая, что это небольшая разработка и у меня приличный компьютер. Кажется, что ресурсы не используются, потому что при сборке образа процессор меньше 8%, оперативная память не сдвигается с места, диск почти на 0%. GPU 0%. Я могу видеть, как интернет заскакивает несколько секунд, пока загружается образ Microsoft, но это все. Я дал Docker следующие ресурсы:

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

Есть идеи, как использовать эти аппаратные ресурсы для ускорения сборки?

mgPePe
источник
Вы использовали базовые образы Windows или Linux Core?
Томас Брюггеманн
Я использую образы на основе Linux на компьютере с Windows 10
mgPePe
1
Таким образом, контейнеры Linux не будут работать под Windows 10, Docker для Windows создаст для этого специальную виртуальную машину, возможно, это приведет к задержке. Это экспериментальная функция, но она все еще в разработке. См. Github.com/moby/moby/issues/33850
Томас Брюггеманн,

Ответы:

2

Похоже, что это общая проблема с Docker в Windows 10, потому что я обнаружил, что несколько потоков в сети говорили об этой проблеме, и, как правило, она не связана с аппаратным ресурсом, назначенным для Docker.

Итак, я сделал несколько попыток на своем виртуальном экземпляре Windows 10 и заметил похожее поведение при запуске некоторых контейнеров на основе Linux с использованием примера docker-compose.

Здесь я сообщаю о шагах, найденных во время поисков, которые действительно ускоряли операции во время моих тестов:

  1. Добавьте каталоги для разработчиков (например, git repos) и docker:

  2. Flush dns выполняет следующую команду:

    ipconfig /flushdns
    
  3. Попробуйте изменить DNS, например, на Google (8.8.8.8 - 8.8.4.4) или Cloud Fare (1.1.1.1 - 1.0.0.1) (здесь, поскольку у меня уже был Google DNS, я попытался противоположным способом установить медленнее DNS и реально операции стали немного медленнее)

  4. Добавьте исключение, если установлен какой-либо другой антивирус (также сначала попробуйте отключить их, чтобы увидеть, может ли это помочь)

  5. Удалить всю поддержку IPV6 и NetBIOS со всех сетевых интерфейсов.

ПРИМЕЧАНИЕ. Кто-то посоветовал удалить Docker и установить после этого, но я не тестировал, потому что я начал с новой установки Windows 10.

Надеюсь, что это может помочь и в вашей среде!

Лучшие ссылки, которые я нашел:

gcallea
источник
1

проверьте, не слишком ли много файлов в каталоге сборки, есть ли необходимость в dcoker, чтобы отправить все файлы демону, которому также нужно время для завершения ......

вы можете игнорировать ненужные файлы, используя .dockerignore

Перед тем, как интерфейс командной строки docker отправит контекст демону docker, он ищет файл с именем .dockerignore в корневом каталоге контекста. Если этот файл существует, CLI изменяет контекст, чтобы исключить файлы и каталоги, которые соответствуют шаблонам в нем. Это помогает избежать ненужной отправки больших или конфиденциальных файлов и каталогов демону и потенциального добавления их к изображениям с помощью ADD или COPY.

LinPy
источник