# Lista de verificación de migración


Usa esta lista de verificación para asegurarte de abordar las consideraciones clave al migrar a Docker Hardened Images.

## Consideraciones de migración

| Elemento | Acción requerida |
|:-------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Imagen base | Actualiza las instrucciones `FROM` de tu Dockerfile para hacer referencia a una Docker Hardened Image en lugar de tu imagen base actual. |
| Gestión de paquetes | Instala paquetes solo en imágenes con la etiqueta `dev` durante las etapas de compilación. Usa `apk` para imágenes basadas en Alpine o `apt` para imágenes basadas en Debian. Copia los artefactos necesarios a tu etapa de ejecución, ya que las imágenes de ejecución no incluyen gestores de paquetes. |
| Usuario no root | Verifica que todos los archivos y directorios que necesita tu aplicación tengan permisos de lectura y escritura para el usuario no root (UID 65532), ya que las imágenes de ejecución se ejecutan como no root por defecto. |
| Compilación multi-stage | Usa imágenes con la etiqueta `dev` o `sdk` para las etapas de compilación en las que necesites herramientas de compilación y gestores de paquetes. Usa imágenes que no sean dev para tu etapa final de ejecución. |
| Certificados TLS | Elimina cualquier paso que instale ca-certificates, ya que las DHI incluyen ca-certificates por defecto. |
| Puertos | Configura tu aplicación para que escuche en el puerto 1025 o superior dentro del contenedor, ya que el usuario no root no puede enlazarse a puertos privilegiados (inferiores a 1024) en Kubernetes o en versiones de Docker Engine anteriores a la 20.10. |
| Punto de entrada | Comprueba el punto de entrada de la DHI elegida usando `docker inspect` o la documentación de la imagen. Actualiza las instrucciones `ENTRYPOINT` o `CMD` de tu Dockerfile si tu aplicación depende de un punto de entrada diferente. |
| Sin shell | Mueve cualquier comando de shell (`RUN`, `SHELL`) a las etapas de compilación utilizando imágenes con la etiqueta `dev`. Las imágenes de ejecución no incluyen una shell, así que copia todos los artefactos necesarios desde la etapa de compilación. |

