@rad_li

Большой размер приложений в докере норм?

Изучаю докер, интересная технология. Но меня смущает размер файлов.

Для примера: установил приложение обычным способом pacman -S package_name. Занимаемый размер на диске около 150 МБ. Установил то же самое через докер - получилось 971 МБ (так показывает portainer).
Сравнил еще несколько приложений, всегда размер через докер превышает минимум в 3-4 раза.

Я понимаю, что внутри образа докера есть не только само приложение, но и зависимости. Но неужели разница может быть такая большая? Или я что-то неправильно делаю?
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@Akela_wolf
Extreme Programmer
Вы не очень понимаете что такое образ докера. Образ докера содержит всё для запуска приложения, кроме ядра ОС (ядро используется из хост-системы). А в зависимости от того как собирали образ - может быть и что-то лишнее, нафиг не нужное для запуска приложения. Но автору образа было лень это выпиливать из него (или он на это забил). Собственно вот и вся разница. И те библиотеки, которые у вас уже есть в системе (и которые вы не учитываете при расчетах занимаемого им места) - докер притащит с собой (это наверняка будут другие версии библиотек, но факт в том что он их с собой притащит). Например, если вы говорите о Java-приложении, в системе наверняка есть JVM. И вы увидите только размер jar-файла и каких-то обвязок вокруг него. А в докере это будет плюс JVM, плюс библиотеки для JVM, плюс, плюс, плюс... Вот и набегает размер образа.

Общий размер образов докера можно сократить, если все образы будут использовать одну и ту же базу (в терминах докера layer). Но это отдельная тема, в которую я сейчас углубляться не буду.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
vabka
@vabka
Токсичный шарпист
Докер тащит с собой все зависимости, в том числе и ОС.
Это плата за изолированность
Ответ написан
karabanov
@karabanov Куратор тега Docker
Системный администратор
Почисти кеш пакетов (делать это надо на том же слое в котором устанавливается пакет), прочитай про то, как устроены слои и copy-on-write.

Используй dive для того, чтобы найти занимающий место хлам и предусмотри Dockerfile его удаление (удалять надо на том же слое, в котором он добавляется).

Большой размер образа - это нехорошо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы