Как уменьшить размер изображения докера?

Я использую официальный пакет rails onbuild pack ( https://registry.hub.docker.com/_/rails/) для создания и создания образа rails с приложением. Но каждое приложение занимает около 900 МБ. Есть ли способ уменьшить этот размер?

Вот мой рабочий процесс ->

add dockerfile to the project -> build -> run

Проблема в том, что в этой системе может быть N приложений, и если каждое приложение занимает 1 ГБ дискового пространства, это будет проблемой. Если мы уменьшаем слои, это уменьшит размер? Если да, как это можно сделать?

REPOSITORY           TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
blog2                latest              9d37aaaa3beb        About a minute ago   931.1 MB
my-rails-app         latest              9904zzzzc2af        About an hour ago    931.1 MB

1 ответ

Решение

Поскольку все они исходят из одного и того же базового образа, каждый из них не занимает 900 МБ (при условии, что вы используете AUFS в качестве файловой системы *). Там будет одна копия базового изображения (_/rails), а затем сделанные вами изменения будут сохранены в отдельных (обычно гораздо меньших) слоях.

Если вы хотите увидеть размер каждого слоя изображения, вы можете поиграть с этим инструментом. Я также поместил это в контейнер здесь.

*) Если вы используете docker в Ubuntu или Debian вы, вероятно, по умолчанию используете AUFS. Другие версии Linux для хоста могут использовать разные файловые системы для образов, и они не все хорошо разделяют базовые образы.

Другие вопросы по тегам