Compartir comentarios
Las respuestas se generan en base a la documentación.

Migrar desde Wolfi

Esta guía te ayuda a migrar de imágenes basadas en Wolfi a Docker Hardened Images (DHI). En general, el proceso de migración es directo, ya que Wolfi es similar a Alpine y DHI proporciona una imagen securizada basada en Alpine.

Al igual que otras imágenes securizadas, DHI proporciona atestaciones completas que incluyen SBOM y procedencia, lo que te deja verificar las firmas de las imágenes y escanearlas en busca de vulnerabilidades para garantizar la seguridad e integridad de tus imágenes.

Pasos de migración

El siguiente ejemplo demuestra cómo migrar un Dockerfile de una imagen basada en Wolfi a una Docker Hardened Image basada en Alpine.

Paso 1: Actualizar la imagen base en tu Dockerfile

Actualiza la imagen base en el Dockerfile de tu aplicación a una imagen securizada. Normalmente será una imagen etiquetada como dev o sdk porque tiene las herramientas necesarias para instalar paquetes y dependencias.

El siguiente fragmento de diff de un Dockerfile muestra la imagen base antigua reemplazada por la nueva imagen securizada.

Note

Debes autenticarte en dhi.io antes de poder descargar Docker Hardened Images. Usa tus credenciales de Docker ID (el mismo usuario y contraseña que usas para Docker Hub). Si no tienes una cuenta de Docker, crea una de forma gratuita.

Ejecuta docker login dhi.io para autenticarte.

- ## Original base image
- FROM cgr.dev/chainguard/go:latest-dev

+ ## Updated to use hardened base image
+ FROM dhi.io/golang:1.25-alpine3.22-dev

Ten en cuenta que DHI no tiene una etiqueta latest con el fin de promover las mejores prácticas en torno al control de versiones de las imágenes. Asegúrate de especificar la etiqueta de versión adecuada para tu imagen. Para encontrar la etiqueta correcta, explora las etiquetas disponibles en el Catálogo de DHI.

Paso 2: Actualizar la imagen de ejecución en tu Dockerfile

Note

Se recomiendan las compilaciones multi-stage para mantener la imagen final mínima y segura. Las compilaciones de una sola etapa son compatibles, pero incluyen la imagen dev completa y, por lo tanto, dan como resultado una imagen más grande con una superficie de ataque más amplia.

Para garantizar que tu imagen final sea lo más mínima posible, debes utilizar una compilación multi-stage. Todas las etapas de tu Dockerfile deben utilizar una imagen securizada. Mientras que las etapas intermedias normalmente utilizarán imágenes etiquetadas como dev o sdk, tu etapa final de ejecución debe utilizar una imagen de ejecución.

Utiliza la etapa de compilación para compilar tu aplicación y copia los artefactos resultantes a la etapa final de ejecución. Esto garantiza que tu imagen final sea mínima y segura.

El siguiente ejemplo muestra un Dockerfile multi-stage con una etapa de compilación y una etapa de ejecución:

# Build stage
FROM dhi.io/golang:1.25-alpine3.22-dev AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Runtime stage
FROM dhi.io/golang:1.25-alpine3.22
WORKDIR /app
COPY --from=builder /app/myapp .
ENTRYPOINT ["/app/myapp"]

Después de actualizar tu Dockerfile, compila y prueba tu aplicación. Si encuentras problemas, consulta la guía de Resolución de problemas para ver los problemas y soluciones comunes.

Ejemplos específicos de lenguajes

Consulta la sección de ejemplos para ver ejemplos de migración específicos de cada lenguaje: