Laboratorio: Construcción de imágenes de contenedores
Tabla de contenidos
Toma un Dockerfile que funciona pero es rudimentario y mejóralo progresivamente hasta convertirlo en una imagen de nivel de producción. Cada sección presenta una técnica, aplicada a una aplicación Python Flask real, para que puedas ver el impacto directamente.
Iniciar el laboratorio
Inicia el labspace:
$ docker compose -p labspace -f oci://dockersamples/labspace-building-images up -dAbre tu navegador en http://localhost:3030.
Cuando hayas terminado, elimina el labspace:
$ docker compose -p labspace down
Qué aprenderás
Al final de este Labspace, habrás completado lo siguiente:
- Leer el historial de capas de una imagen y comprender la trampa de la limpieza de capas.
- Reestructurar un Dockerfile para obtener construcciones incrementales rápidas y eficientes con la caché.
- Escribir un archivo
.dockerignorey ejecutar contenedores como un usuario no raíz (non-root). - Utilizar construcciones multi-etapa para ejecutar pruebas como una puerta de validación de construcción y reducir drásticamente el tamaño de la imagen.
- Elegir la imagen base adecuada para producción, incluyendo las Imágenes Endurecidas de Docker (Docker Hardened Images).
- Inyectar secretos de forma segura en tiempo de construcción usando
--mount=type=secret.
Módulos
| # | Módulo | Descripción |
|---|---|---|
| 1 | Bienvenida y tu primera construcción | Explora la aplicación de ejemplo y construye la imagen inicial |
| 2 | Comprendiendo las capas de la imagen | Inspeccionar las capas con docker history y ver la trampa de la limpieza de capas |
| 3 | Mejores prácticas de Dockerfile | Corregir el orden de la caché, agregar .dockerignore y cambiar a un usuario no raíz |
| 4 | Construcciones multi-etapa | Ejecutar pruebas como una puerta de validación y usar una base delgada para la etapa de producción |
| 5 | Elegir una imagen base | Comparar imágenes delgadas, Alpine e Imágenes Endurecidas de Docker |
| 6 | Secretos de construcción | Mostrar por qué ARG filtra secretos y usar --mount=type=secret de forma segura |
| 7 | Cierre | Revisar la lista completa de mejores prácticas y los siguientes pasos |