Skip to content

Docker image size: тренды 2026

Коротко:

Анализ Docker Hub топ-100k популярных images (март 2026): медианный размер 245 MB (вырос с 180 MB в 2020), p95 = 890 MB. Alpine base image остаётся #1 для Node/Python/Go (37% share), distroless растёт (Google-backed, 12% share). Multi-stage builds используются в 61% production Dockerfiles. Частые проблемы: layered package install без cleanup (apt cache), bundled dev dependencies.

Ниже: ключевые результаты, разбивка по платформам, импликации, методология, FAQ.

Попробовать бесплатно →

Ключевые результаты

МетрикаPass/значениеМедианаp75
Median image size (top-100k)245 MB245410
P95 image size890 MB890
Alpine base share37%
Distroless base share12%
Ubuntu/Debian full base29%
Multi-stage builds61%
CVEs в Alpine base (median)338
Images с dev tools в prod18%

Разбивка по платформам

ПлатформаДоляДеталь
Node.js apps22%median: 380 MB
Python apps18%median: 620 MB
Go apps15%median: 45 MB
Java apps (JDK)12%median: 520 MB
nginx/apache8%median: 140 MB
Database containers10%median: 410 MB

Почему это важно

  • Меньше image → быстрее deploy (pull time), меньше storage cost. 100 MB → 500 MB = 5x slower pull
  • Security: меньше surface → меньше CVEs. Distroless images содержат ≈0 tools (нет sh, нет curl)
  • Alpine musl incompatibilities: некоторые native Python packages (cffi, cryptography) требуют glibc
  • Multi-stage build pattern: build stage с full toolchain → copy artifacts → runtime stage tiny
  • Лучшие практики 2026: distroless для Go/Rust (<50 MB), Alpine для Python/Node (<200 MB), avoid Ubuntu в prod

Методология

Сканирование Docker Hub API + крупных GHCR repos. 100k самых-pulled images. Размер = uncompressed total. Base classification через FROM parsing. Март 2026.

Больше по теме

Часто задаваемые вопросы

Alpine vs Distroless?

Alpine (5MB base) — есть shell + package manager. Distroless (0MB tools) — только runtime. Distroless безопаснее, но debug сложнее (no shell).

Multi-stage build — как?

FROM node:20 AS build → npm build. FROM node:20-alpine → COPY --from=build /app/dist. Final image 50 MB вместо 1 GB.

Alpine security?

musl libc reliability ниже glibc на некоторых Python libs. Regular security updates via apk. CVEs patched за 1-7 дней.

Как проверить image size?

<code>docker images | grep myapp</code> + <code>dive myapp:latest</code> для layer analysis. Dive показывает wasted space.