Як зменшити розмір зображення Docker


12

У мене є контейнер під керуванням GlassFish. Коли я спробував зробити зображення, він став 14 Гб. Пізніше я видалив /tmp/з контейнера розміром 10 ГБ і спробував зробити зображення, але все-таки зображення - 14 ГБ. Здається, що видалення файлів з контейнера не відображається в розмірі зображення. Як виправити цю проблему?


1
Ніхто насправді не може дати жодних рекомендацій, не знаючи трохи більше про вашу установку. Що таке Dockerfile? Яке дерево файлів додається до контексту збірки Docker? Офіційний glassfishобраз Докера становить близько 1 ГБ. Незважаючи на те, що проклято велике для зображення Докера, воно все ще набагато менше, ніж те, що ви, здається, будуєте.
Енді Шінн

Дивіться це питання ТА для того, як вийти. Також у цьому пошуку Google є ряд релевантних статей.
Міша Брукман

Відповіді:


9

Проблема, з якою ви можете зіткнутися, полягає в тому, що видалення файлів у фіксації не змінює той факт, що файл був там у попередньому зображенні, так що попереднє зображення все ще було 14G.

Подивіться на частину шарів у цій статті: http://woudenberg.io/reducing-docker-image-size/

Щоб вирішити цю проблему, потрібно видалити речі під / tmp / в межах оригінальної комісії, яка їх генерувала, тому зображення, створене в результаті цього комітету, не включає їх. Це легко при використанні докер-файлів, але не впевнений, чи можливо, коли створюєте зображення з коміксами.

Ще одна річ, яку ви можете зробити, - це шари сквош, експортуючи / імпортуючи зображення.


4

Якщо продовжити відповідь @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

Що стосується нижньої сторони, це означає менше кешування, так як якщо що-небудь зміниться у великому командному рядку, Докер повинен буде запустити весь набір команд.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.