442просмотров
45.9%от подписчиков
6 марта 2026 г.
Score: 486
"Пару слов" про оптимизацию Docker-образов Коллеги, есть у меня одна "больная тема". Вижу в CI/CD пайплайнах образы на гигабайты, которые тянут за собой пол-интернета при каждом деплое. При этом внутри - бубунту с полным набором пакетов ради одного скрипта на питоне. Почему это плохо? Каждый лишний мегабайт в образе - это: - Медленный пулл на нодах - Лишнее место в регистри - Долгий старт подов - Лишний трафик Что с этим делать: ➤ Используйте alpine где можно. Базовый образ питона на alpine весит 50 МБ вместо 900 МБ на дебиане. Разница очень ощутима. ➤ Чистите за собой кэши. Если ставите пакеты через apt, не забывайте про apt-get clean && rm -rf /var/lib/apt/lists/*. В том же alpine с apk та же история. ➤ Многослойная сборка. Классика: в одном слое компилируете, во второй кладёте только результат. В итоге в финальном образе нет ни компиляторов, ни исходников, ни временных файлов. # Билдер FROM golang:1.20 AS builder COPY app.go . RUN go build -o /app app.go # Финальный образ FROM alpine:latest COPY --from=builder /app /app CMD ["/app"] ➤ Объединяйте RUN-инструкции. Каждый RUN создаёт отдельный слой. Если разнести установку пакетов и чистку по разным RUN, то в промежуточном слое кэши останутся и будут торчать в финальном образе. # Плохо RUN apt-get update RUN apt-get install -y curl RUN apt-get clean # Хорошо RUN apt-get update && \ apt-get install -y curl && \ apt-get clean ➤ Не тащите лишние файлы. .dockerignore рулит. Не тащите в образ .git, тесты, документацию и локальные конфиги. Проверяйте размер своих образов хотя бы раз в месяц. Я обычно смотрю статистику в registry и если вижу, что какой-то образ резко потолстел - иду разбираться. Часто находится что-то неожиданное вроде случайно примонтированных логов или дампов памяти. 🌐 @helcode
442
просмотров
1811
символов
Нет
эмодзи
Нет
медиа

Другие посты @helcode

Все посты канала →
"Пару слов" про оптимизацию Docker-образов Коллеги, есть у м — @helcode | PostSniper