Docker создает огромные размеры изображений

Я вытащил базу ubuntu: последнее изображение (размер 192.7 МБ) и установил для него только Oracle java7 (JDK) (размер tar.gz ~ 53 МБ) и зафиксировал полученное изображение. Размер изображения составляет 903 МБ.

Почему размер изображения увеличивается на такой огромный запас? Нам еще нужно добавить другие компоненты (tom cat, vertx, mysql и т.д.). Размер изображения станет неуправляемым.

Какие советы по уменьшению размера изображения?

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
gammay/baseimage    v0.1a               80324b762c5e        21 minutes ago      903.6 MB
ubuntu              latest              9bd07e480c5b        2 weeks ago         192.7 MB

Ответ 1

Несколько точек:

Ответ 2

Java7, вероятно, имеет большое количество зависимостей, которые необходимо установить для запуска, которые не установлены на вашем базовом Ubuntu изображении. Все они также устанавливаются при установке java, что, вероятно, объясняет большой размер изображения.

Ответ 3

Любые советы о том, как уменьшить размер изображения?

Вы можете попробовать сделать следующее:

  • Вы строите java из источника? Если да, есть ли опции, которые вы можете отключить, которые не нужны для вашего приложения? Существуют ли какие-либо пакеты разработчика, которые не нужны во время выполнения? Вы также можете избавиться от них.

  • Запустите mysql в своем контейнере и подключите контейнер своего веб-приложения к контейнеру mysql, возможно, через контейнерные ссылки. Существует несколько причин для этого, один из которых заключается в упрощении масштабирования ваших компонентов приложения.

  • Создайте свой экземпляр tomcat таким образом, чтобы у вас был контейнер tomcat и ваш банкомат приложения. Затем вы можете смонтировать свое приложение с помощью объема данных в контейнер tomcat. Изображение приложения должно быть относительно небольшим по сравнению с контейнером tomcat/java. Обновление вашего приложения становится немного проще, так как вам не нужно будет повторно восстанавливать изображения tomcat/java (если нет дополнительных функций, которые нужно испечь в tomcat.

Ответ 4

Вы можете оптимизировать свое изображение

http://www.centurylinklabs.com/optimizing-docker-images/

и ваше изображение может потерять вес с помощью

https://github.com/jwilder/docker-squash

Вы также можете создать небольшое изображение с помощью инструмента в этой статье

http://blog.xebia.com/2015/06/30/how-to-create-the-smallest-possible-docker-container-of-any-image/ и изображение-докеры с инструментом, доступное в

https://github.com/mvanholsteijn/strip-docker-image