Как уменьшить размер изображения докера?
Я использую официальный пакет 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 для хоста могут использовать разные файловые системы для образов, и они не все хорошо разделяют базовые образы.