Анализ 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 MB | 245 | 410 |
| P95 image size | 890 MB | 890 | — |
| Alpine base share | 37% | — | — |
| Distroless base share | 12% | — | — |
| Ubuntu/Debian full base | 29% | — | — |
| Multi-stage builds | 61% | — | — |
| CVEs в Alpine base (median) | 3 | 3 | 8 |
| Images с dev tools в prod | 18% | — | — |
| Платформа | Доля | Деталь | — |
|---|---|---|---|
| Node.js apps | 22% | median: 380 MB | — |
| Python apps | 18% | median: 620 MB | — |
| Go apps | 15% | median: 45 MB | — |
| Java apps (JDK) | 12% | median: 520 MB | — |
| nginx/apache | 8% | median: 140 MB | — |
| Database containers | 10% | median: 410 MB | — |
Сканирование Docker Hub API + крупных GHCR repos. 100k самых-pulled images. Размер = uncompressed total. Base classification через FROM parsing. Март 2026.
Alpine (5MB base) — есть shell + package manager. Distroless (0MB tools) — только runtime. Distroless безопаснее, но debug сложнее (no shell).
FROM node:20 AS build → npm build. FROM node:20-alpine → COPY --from=build /app/dist. Final image 50 MB вместо 1 GB.
musl libc reliability ниже glibc на некоторых Python libs. Regular security updates via apk. CVEs patched за 1-7 дней.
<code>docker images | grep myapp</code> + <code>dive myapp:latest</code> для layer analysis. Dive показывает wasted space.