Dive — это инструмент для изучения изображения Docker, содержимого слоя и обнаружения способов сократить размер вашего изображения Docker, написанного в Go.
Как работают слои?
Мы должны начать с концепции слоя в Docker — мы можем сказать, что слои похожи на GIT Commits:
- У них есть родительский слой,
- читаются,
- и получить удостоверение личности, рассчитанное с помощью хэша SHA256.
Почему «readonly» важно?
Потому что, если вы редактируете или удаляете файл, этот файл все еще существует внутри вашего изображения Docker.
Итак, мы должны чистить временные или бесполезные файлы в том же Запустить
предложение, чтобы наши изображения были маленькими.
RUN apt-get update && \ apt-get install -y apt-transport-https ca-certificates && \ rm -rf /var/lib/apt/lists/*
То же правило применяется, когда мы строим приложение в БЕЖАТЬ
предложение. Мы должны очистить промежуточные файлы и сохранить только полезные.
Что такое тег Docker?
Теги Docker, как фокус
в Ubuntu: Focal
, просто указатели на слой. В отличие от тегов GIT, в Docker мы признаем, что тег может указывать на другой слой при обновлении изображения.
💡 Совет: изображение не обновляется, потому что слои читаются, это новое изображение. 🤯
Что делает погружение?
С помощью погружения мы можем осмотреть слои изображения докера и увидеть разницу от родительского слоя.
dive node:alpine
На левой панели мы можем увидеть слои данного изображения, команду, которая генерирует выбранное слой в фиолетовом 💜, идентификаторе и дайджест этого выбранного слоя.
На правой панели мы можем увидеть diff
слоя с цветной ссылкой:
- 🟢 Зеленый: новые файлы.
- 🟡 Желтый: отредактированные файлы.
- 🟥 красный: удаленные файлы.
Вы видели это /tmp
папка в слое? 🧐 Теперь мне интересно, если /tmp
Папка с v8-compile-cache не может быть привержен слою, уменьшая размер Узел: альпийский
Изображение по 2.3mib
Анкет 🤔
Есть Pr удалить v8-compile-cache
Папка, но кэш «используется для ускорения времени загрузки пряжи от 153 мс до 113 мс». Стоило того?
Что такое оценка эффективности?
Dive пытается помочь нам, указав эффективность наших изображений. Отредактированные или удаленные файлы снижают оценку эффективности, поскольку исходные файлы существуют в изображении, но не полезны для контейнера.
Счет
Столбец указывает, сколько раз один и тот же файл совершается в изображение.
Эффективность как Линтер
Вы можете запустить это в своем конвейере CI, чтобы минимум сохранить потраченное место впустую:
CI=true dive node:alpine
Как рассчитывается оценка эффективности?
Оценка принимает только кнопку отредактированных или удаленных файлов, которые потребляют пространство на изображении.
Может быть, мы сможем применить больше правил проверки, которых нет сегодня.
- Проверьте наличие контента в
/tmp
папка. - Проверьте наличие файлов Apt, Yum или Pacman Cache.
- Проверьте, чтобы получить шаблон имени файла, например: не забывайте
*.tar.gz
файлы внутри изображения.
Больше погружения
Спасибо Алекс Гудман Для этого удивительного инструмента! И если вы это 💛, оставьте ⭐ in https://github.com/wagoodman/dive Анкет
Оригинал: «https://dev.to/cloudx/analyzing-the-docker-layers-with-dive-5e7o»