#docker-desktop
#docker-рабочий стол
Вопрос:
Недавно я собрал новый настольный компьютер AMD, чтобы заменить старый ноутбук Dell Latitude E7540.
Рабочий стол AMD:
- Ryzen 3 3100 @ 3,8 ГГц (4C / 8T), 32 ГБ оперативной памяти DDR4 3600 CL17, твердотельный накопитель Corsair P600 Gen4
Ноутбук DELL:
- Dell Latitude E7540: Intel I7-5600U @ 2,6 ГГц (2C / 4T), 16 МБ оперативной памяти DDR3 1600, Samsung mSATA PM851
На новом рабочем столе AMD при выполнении docker build
команды возникают две ситуации:
- Производительность ужасна, даже при создании простого образа для запуска команды требуется много времени. После запуска требуется много времени для завершения (когда оно завершается)
- Окно сборки вылетает почти в 50% случаев.
Тесты показывают, что новый AMD Desktop работает в 3,5 раза быстрее на одноядерном процессоре и в 6 раз быстрее на многоядерном.
Таким образом, я ожидал гораздо лучшей производительности с новым рабочим столом AMD.
К сожалению, это не так, и для того же Dockerfile (который генерирует очень большой образ):
- Dell запускается быстрее
- Dell завершает работу быстрее (10 м против 30 м)
- На Dell окно сборки никогда не вылетает.
Единственное различие между обеими системами заключается в том, что одна из них представляет собой платформу Intel, а новая — Ryzen 3 AMD.
Детали среды одинаковы на обеих машинах:
- Версия Windows: Windows 10 Ent. 19049
- Версия Docker Desktop: Docker 3.0.0
Чем можно объяснить такую ужасную производительность Docker-Desktop в новой системе AMD?
Ответ №1:
После нескольких тревожных дней я могу подтвердить, что проблема не связана с AMD.
Виновником является антивирус, который при включении сканирует файлы, используемые Docker, что вызывает все описанные мной проблемы.
В документации Docker указано, как отключить антивирус для проверки файлов, связанных с Docker:
Когда антивирусное программное обеспечение сканирует файлы, используемые Docker, эти файлы могут быть заблокированы таким образом, что команды Docker зависают.
Один из способов уменьшить эти проблемы — добавить каталог данных Docker (/var/ lib/docker в Linux, %ProgramData% docker в Windows Server или $HOME/Library/Containers/com.docker.docker/ на Mac) в список исключений антивируса. Однако это связано с тем, что вирусы или вредоносные программы в образах Docker, доступных для записи слоях контейнеров или томах не обнаруживаются. Если вы решите исключить каталог данных Docker из фоновой проверки на вирусы, вы можете запланировать повторяющуюся задачу, которая останавливает Docker, сканирует каталог данных и перезапускает Docker.