Калькулятор размера
Docker-образа
Как устроен Docker-образ
Docker-образ состоит из набора неизменяемых слоёв (layers), каждый из которых представляет собой результат выполнения одной инструкции Dockerfile. Понимание этой архитектуры — ключ к оптимизации размера контейнеров.
Базовый образ (FROM)
Фундамент контейнера. Содержит операционную систему и системные библиотеки. Alpine занимает ~5 МБ благодаря musl libc и BusyBox, тогда как Ubuntu — ~77 МБ с полным набором glibc. Выбор базового образа определяет минимальный размер контейнера.
Слои и кеширование
Каждая инструкция RUN, COPY, ADD создает новый слой. Docker кеширует слои и переиспользует их между сборками. Если слой не менялся — он берется из кеша. Правильный порядок инструкций ускоряет сборку в разы: сначала зависимости, потом код приложения.
Сжатие в реестре
При docker push каждый слой сжимается gzip. Типичный коэффициент сжатия — 30-40%, но он зависит от содержимого: текстовые файлы сжимаются хорошо, бинарные — хуже. В Docker Hub и приватных реестрах хранятся именно сжатые слои.
Зачем оптимизировать размер Docker-образа
Компактные контейнеры — это быстрее, дешевле и безопаснее. Вот ключевые причины следить за размером образа.
Быстрый деплой
Маленький образ скачивается за секунды вместо минут. При автоскейлинге в Kubernetes это критично: новый pod стартует быстрее, а downtime сокращается.
Экономия на хранении
Registry-хранилище оплачивается по объему. Образ 100 МБ вместо 900 МБ — это 9-кратная экономия при хранении 50+ версий. В масштабе команды суммы ощутимы.
Ускорение CI/CD
Docker build, push и pull — самые медленные этапы пайплайна. Сократив образ на 500 МБ, вы экономите минуты на каждом коммите и ускоряете feedback loop.
Безопасность
Меньше пакетов — меньше поверхность атаки. Alpine без лишних утилит содержит десятки уязвимостей вместо сотен. Сканеры (Trivy, Snyk) покажут разницу.
Edge и IoT
На edge-устройствах и в IoT-сценариях дисковое пространство ограничено. Образ 50 МБ может работать даже на Raspberry Pi и маломощных VPS.
Трафик и bandwidth
Каждый docker pull — это сетевой трафик. При развертывании на 100 нод кластера образ 900 МБ создаёт 90 ГБ трафика. С Alpine — менее 10 ГБ.
Сравнение базовых образов
Размеры наиболее популярных базовых образов Docker Hub. Данные приведены для amd64-архитектуры и актуальны на 2025 год.
| Образ | Несжатый | Сжатый | Libc | Примечание |
|---|---|---|---|---|
| alpine:latest | ~5 МБ | ~3 МБ | musl | Минимальный, но некоторые пакеты несовместимы |
| debian:slim | ~80 МБ | ~30 МБ | glibc | Баланс между размером и совместимостью |
| ubuntu:latest | ~77 МБ | ~29 МБ | glibc | Широкая экосистема пакетов (apt) |
| node:alpine | ~130 МБ | ~50 МБ | musl | Для Node.js без нативных зависимостей |
| node:slim | ~240 МБ | ~85 МБ | glibc | Node.js с glibc для нативных модулей |
| node:latest | ~900 МБ | ~350 МБ | glibc | Полная сборка с build-инструментами |
| python:slim | ~150 МБ | ~55 МБ | glibc | Python без лишних пакетов |
| golang:alpine | ~250 МБ | ~95 МБ | musl | Go SDK для сборки, финал — scratch/alpine |
| nginx:alpine | ~40 МБ | ~15 МБ | musl | Веб-сервер для статики и реверс-прокси |
Multi-stage сборки/ руководство
Multi-stage build — главный приём оптимизации Docker-образов. Идея проста: один этап для сборки (с gcc, node-gyp и прочими инструментами), другой — для запуска (только runtime и артефакты).
Пример: Node.js приложение
Сборка на node:latest (900 МБ), запуск на node:alpine (130 МБ). Build-зависимости не попадают в финальный образ.
# Этап 1: сборка
FROM node:latest AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Этап 2: запуск
FROM node:alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]Пример: Go приложение
Go компилируется в один бинарник — финальный образ может быть scratch (0 МБ) или alpine (~5 МБ).
# Этап 1: сборка
FROM golang:alpine AS builder
WORKDIR /app
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o server .
# Этап 2: запуск
FROM alpine:latest
COPY --from=builder /app/server /server
CMD ["/server"]Результат: Go-приложение в финальном образе занимает 10-20 МБ вместо 800+ МБ. Экономия — 98% размера.
Совет: Используйте CGO_ENABLED=0 для Go, чтобы создать статически слинкованный бинарник без зависимости от libc.
Техники оптимизации Dockerfile
Практические приёмы, которые помогут уменьшить размер образа, ускорить сборку и сделать контейнер более безопасным.
1Выбирайте минимальный базовый образ
Начните с Alpine или -slim вариантов. Alpine использует musl libc вместо glibc, что даёт образ в 15-20 раз меньше Ubuntu. Если нужна совместимость с glibc (numpy, pandas, native-модули), выбирайте debian:slim или distroless от Google.
2Создайте .dockerignore
Файл .dockerignore работает как .gitignore — исключает ненужные файлы из контекста сборки. Обязательно добавьте: node_modules, .git, *.md, tests, .env, coverage, dist. Без .dockerignore COPY . . скопирует всё, включая .git (сотни МБ).
3Объединяйте RUN-инструкции
Каждый RUN создаёт отдельный слой. Если в одном RUN вы устанавливаете пакет, а в следующем удаляете кеш — кеш всё равно останется в предыдущем слое. Объединяйте команды: apt-get install -y pkg && apt-get clean && rm -rf /var/lib/apt/lists/* в одну инструкцию RUN.
4Правильный порядок слоёв
Docker кеширует слои сверху вниз. Если слой изменился — все последующие пересобираются. Располагайте инструкции от редко меняющихся к часто: сначала COPY package.json и npm install (зависимости меняются редко), потом COPY . . (код меняется часто).
5Используйте --no-install-recommends
Для apt (Debian/Ubuntu): apt-get install --no-install-recommends убирает «рекомендуемые» пакеты, которые часто не нужны в контейнере. Для apk (Alpine): apk add --no-cache не оставляет кеш пакетного менеджера в слое.
6Production-only зависимости
Для Node.js: npm ci --omit=dev устанавливает только production-зависимости. Для Python: не копируйте dev-requirements.txt в финальный образ. Это может сократить размер node_modules вдвое и больше.
Полезные команды Docker
Команды для анализа и диагностики размера образов, которые помогут найти узкие места.
docker imagesСписок всех локальных образов с размерами. Покажет, какие образы занимают больше всего места на диске.
docker history <image>Размер каждого слоя образа. Помогает найти самый «тяжелый» слой и понять, какая инструкция его создала.
docker system dfОбщая статистика использования диска Docker: образы, контейнеры, тома и build-кеш.
docker system prune -aУдаление всех неиспользуемых образов, контейнеров и сетей. Освобождает гигабайты дискового пространства.
dive <image>Утилита dive показывает содержимое каждого слоя в виде файловой системы. Визуализирует эффективность использования места.
docker buildx build --sbom .Генерация SBOM (Software Bill of Materials) — полного списка компонентов образа для аудита безопасности.
Как пользоваться калькулятором
Простая инструкция для оценки размера вашего Docker-образа до начала сборки.
Выберите базовый образ
Кликните на карточку с нужным образом: alpine, debian:slim, node:alpine и другие. Если вашего образа нет в списке — выберите «Свой размер» и введите значение вручную.
Добавьте зависимости
Отметьте пакеты, которые устанавливаете в Dockerfile через apt-get install или apk add. Для нестандартных зависимостей используйте форму «Добавить свою».
Укажите размер кода
Введите примерный размер вашего приложения: исходный код, скомпилированные файлы, статические ассеты. Включите multi-stage, если используете двухэтапную сборку.
Изучите результаты
Калькулятор покажет оценку размера на диске и в реестре, визуализацию слоёв и сравнение с альтернативными базовыми образами. Используйте советы по оптимизации.
Часто задаваемые вопросы
Был ли этот калькулятор полезен?
Инструмент справочный — не заменяет эксперта
Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.
Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.
Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.
Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.
Похожие калькуляторы
YAML валидатор и форматтер
Онлайн проверка и форматирование YAML-файлов. Валидация синтаксиса, конвертация YAML ↔ JSON, подсветка ошибок с номерами строк.
/yaml-validatorГенератор Cron-выражений
Визуальный конструктор cron-расписаний с переводом на русский язык. Создайте cron-выражение для планировщика задач Linux, настройте расписание и посмотрите ближайшие запуски.
/generator-cronКонвертер Unix Timestamp ↔ дата
Онлайн конвертер Unix Timestamp в дату и обратно. Текущий Unix-таймстемп, конвертация с учётом часовых поясов России, форматы ISO 8601 и RFC 2822.
/konverter-unix-timestampКалькулятор SLA / стоимости простоя
Расчёт допустимого простоя по SLA (99.9% → минуты в год). Калькулятор стоимости даунтайма и обратный расчёт SLA по фактическому простою.
/kalkulyator-sla-uptimeКалькулятор контейнеров (Docker)
Расчёты контейнеров: ресурсы, образы, Docker Compose, реестр, оркестрация, стоимость
/container-calculatorCI/CD калькулятор: пайплайн, кэш, тесты, раннеры, деплой
Комплексный CI/CD калькулятор: оптимизация пайплайна (критический путь, параллелизация), кэш сборки (hit ratio, ROI), анализ тестов (flaky, шардирование), артефакты (Docker, npm), раннеры (автоскейлинг) и стратегии деплоя (Blue-Green, Canary, Rolling).
/ci-cd-calculatorКалькулятор микросервисной архитектуры
Расчёты микросервисов: ресурсы, сеть, надёжность, API Gateway, очереди, стоимость
/microservices-calculatorDevOps калькулятор: DORA-метрики, SLA, CI/CD пайплайн, мониторинг
Комплексный DevOps калькулятор. DORA-метрики (deployment frequency, lead time, MTTR, change failure rate), расчёт SLA и доступности (uptime 99.9–99.999%), размер инфраструктуры (CPU/RAM/диск), мониторинг и алертинг, оптимизация облачных затрат (Reserved vs Spot), анализ CI/CD пайплайна.
/devops-calculatorКалькулятор технического долга: объём, SQALE, рефакторинг
Комплексный калькулятор технического долга: оценка объёма в часах и рублях, расчёт процентной ставки (стоимость бездействия), матрица приоритизации (impact vs effort), метрики качества кода (цикломатическая сложность, дупликация, покрытие тестами), план рефакторинга по спринтам, SQALE рейтинг A-E.
/technical-debt-calculatorГенератор Cubic Bezier (CSS transition)
Интерактивный генератор кривых Безье для CSS анимаций. Визуальная настройка плавности переходов, пресеты (ease, linear) и копирование кода.
/cubic-bezierКалькулятор код-ревью: время, размер PR, дефекты, нагрузка
Комплексный калькулятор код-ревью: оценка времени проверки кода, анализ размера PR (XS/S/M/L/XL), покрытие ревью и bus factor, плотность дефектов и escape rate, нагрузка команды ревьюеров, метрики качества (churn, rework, first-pass yield).
/code-review-calculatorКалькулятор теории цвета: гармония, конвертер, палитры, смешивание, дальтонизм
Комплексный инструмент для работы с цветом: цветовые гармонии (комплементарная, аналогичная, триадная, тетрадная), конвертер HEX/RGB/HSL/HSV/CMYK, генератор палитр (монохроматическая, shades, tints, tones), смешивание цветов (аддитивное/субтрактивное), симулятор дальтонизма и анализ цветовой температуры.
/color-theory-calculatorКалькулятор подсетей CIDR/IP
Онлайн калькулятор подсетей IPv4. Расчёт маски подсети, диапазона IP-адресов, количества хостов по CIDR-нотации. Бесплатный инструмент для сетевых инженеров.
/kalkulyator-podsetej-cidrКалькулятор размера бандла (JS/CSS)
Оценка итогового размера фронтенд-сборки по зависимостям. Сравнение пакетов, бюджет бандла, рекомендации по оптимизации.
/razmer-bandla-js-cssКалькулятор градиентов и интерполяции цветов
Генератор плавных переходов между цветами. Создайте CSS градиент онлайн, получите коды цветов (HEX/RGB) и настройте количество шагов.
/color-gradient