Chainguard es la empresa de los creadores de Sigstore, enfocada en supply chain security práctica. Su producto principal: Chainguard Images, imágenes Docker construidas con rigor extremo — zero CVEs, SBOMs firmados, reproducible builds. Para empresas con compliance estricta o que quieren reducir superficie de ataque, son una alternativa seria a debian:latest o alpine:latest.
Qué ofrecen
Cada imagen Chainguard tiene:
- Minimal: solo lo necesario para ejecutar la app, nada más.
- Zero known CVEs: reconstruidas diariamente; vulnerabilidades corregidas en horas.
- Firmadas con Sigstore: verificables.
- SBOMs generados automáticamente, firmados.
- Reproducible builds: hash determinista dado el mismo input.
- Distroless opcional: variantes sin shell, sin package manager.
Estructura
Chainguard publica imágenes para decenas de lenguajes/stacks:
cgr.dev/chainguard/python— base Python.cgr.dev/chainguard/node— Node.js.cgr.dev/chainguard/go— Go.cgr.dev/chainguard/nginx— Nginx.cgr.dev/chainguard/postgres— PostgreSQL.- Muchas más.
Dos variantes típicas:
- Runtime: para ejecutar apps (distroless, sin shell).
- Dev: con herramientas adicionales para desarrollo/builds.
Uso: Dockerfile típico
Multi-stage build:
FROM cgr.dev/chainguard/node:latest-dev AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM cgr.dev/chainguard/node:latest
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]
Build: ~100MB runtime (vs ~200-300MB Node oficial).
Verificación con cosign
Cualquiera puede verificar:
cosign verify cgr.dev/chainguard/node:latest \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity-regexp='.*chainguard.*'
Reproducibilidad verificable: built by Chainguard, via their GitHub Actions.
Comparación tamaños
Tamaños orientativos:
| Stack | Oficial | Alpine | Distroless | Chainguard |
|---|---|---|---|---|
| Node 20 | 1.1GB | 180MB | 180MB | 170MB |
| Python 3.12 | 1GB | 170MB | 200MB | 170MB |
| nginx | 187MB | 40MB | — | 35MB |
| Go runtime | — | — | 70MB | 50MB |
Tamaño similar a Distroless de Google, pero con CVE management activo y SBOMs.
Precio
Tier público:
- Imagens gratuitas:
cgr.dev/chainguard/*latest (más populares). - Actualizaciones diarias: sí.
Tier empresarial:
- Versioned images:
cgr.dev/chainguard/node:20(pinned). - Soporte SLA.
- Imagens custom.
- Acceso a FIPS-certified variantes.
Pricing por imagen o por volumen.
Chainguard vs Alpine
| Aspecto | Chainguard | Alpine |
|---|---|---|
| Base system | Wolfi | musl + BusyBox |
| CVE management | Proactive, daily | Community |
| SBOMs | Incluidos, firmados | No nativo |
| Compatibilidad | glibc | musl (puede romper) |
| Tamaño | Similar | Similar |
Alpine usa musl libc que ocasionalmente causa incompatibilidades sutiles con apps diseñadas para glibc (DNS resolution quirks, locale handling). Chainguard usa Wolfi (distro propia de Chainguard) con glibc.
Chainguard vs Distroless
Google Distroless vs Chainguard:
- Distroless: sin package manager, solo runtime.
- Chainguard: también minimal, pero con opción
-devvariant con tooling. - Updates: Distroless tiene pace lenta; Chainguard diaria.
- SBOM: Chainguard de fábrica; Distroless via external tools.
Para proyectos que quieren control fino de updates y visibilidad de contenido, Chainguard gana.
Cuándo tiene sentido
- Compliance estricta (PCI-DSS, HIPAA, FedRAMP): pipelines auditables.
- Supply chain security como prioridad alta.
- Reducción de CVEs como métrica ESG.
- Producción con workloads sensibles.
Menos sentido para:
- Proyectos personales / experimentación.
- Apps legacy que requieren glibc-specific o package específicos no cubiertos.
- Cuando el vendor lock-in es preocupación (aunque pueden migrar).
Limitaciones
- Ecosistema propio: Wolfi es distro propia; menos paquetes que Debian.
- Coste para versiones específicas.
- Tamaño del catálogo: cubre lo popular, no todo el long tail.
- Algunas build tools no disponibles en runtime variants.
Alternativas
- Distroless (Google): similar minimal approach.
- Scratch: imagen vacía para binarios Go.
- Wolfi (Chainguard OSS): la distro base, puedes usar directamente.
- Iron Bank (DoD): similar approach para defense.
Conclusión
Chainguard Images representan la dirección donde va el ecosistema de contenedores enterprise: minimal, firmado, actualizable, auditable. Para empresas con compliance o que valoran supply chain security serio, el investment en migrar merece la pena. El tier público gratuito permite probar sin compromiso. Contra imagenes oficiales “latest” de Docker Hub, la diferencia en CVE count y profile de riesgo es tangible. El precio para tier enterprise puede ser alto pero el coste de un incidente supply chain es mayor.
Síguenos en jacar.es para más sobre container security, supply chain y Sigstore.