Назад | Перейти на главную страницу

Как уменьшить размер образа Docker

У меня есть контейнер с GlassFish. Когда я попытался зафиксировать образ, он стал 14 ГБ. Позже я удалил /tmp/ в контейнере, который был 10 ГБ и пытался зафиксировать образ, но по-прежнему образ составляет 14 ГБ. Кажется, что удаление файлов из контейнера никак не отражается на размере изображения. Как мне исправить эту проблему?

Проблема, с которой вы можете столкнуться, заключается в том, что удаление файлов в фиксации не меняет того факта, что файл был там в предыдущем образе, так что предыдущее изображение все еще имеет размер 14 ГБ.

Взгляните на раздел «Слои» в этой статье: http://woudenberg.io/recting-docker-image-size/

Чтобы решить эту проблему, вам нужно удалить вещи из / tmp / в исходной фиксации, которая их сгенерировала, чтобы образ, созданный в результате этой фиксации, не включал их. Это легко при использовании dockerfiles, но не уверен, что это возможно при создании изображений с коммитами.

Еще одна вещь, которую вы можете сделать, - это сжать слои, экспортируя / импортируя изображение.

Расширяя ответ @Juan Antonio, имея Dockerfile это не сэкономит место:

RUN apt-get install -y foo bar
...
RUN apt-get purge --auto-remove -y foo bar

Вместо этого вам нужно сделать следующее:

RUN apt-get install -y foo bar && \
    && ... \
    && apt-get purge --auto-remove -y foo bar

С другой стороны, это означает меньшее кэширование, поскольку если что-то изменится в этой большой командной строке, Docker придется повторно запустить весь набор команд.