🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer un Dockerfile como auditor
5 tareas · 40 min · Principiante
En el módulo 5 viste que la base viaja dentro de la imagen. Aquí subes un escalón: el Dockerfile es la receta de la imagen y se revisa como código, línea por línea, antes de construir nada. Tagua Mensajería, una empresa de envíos, mantiene el servicio api-envios y tú revisas su receta en el repositorio. Aprendes a ver qué decide cada instrucción —la etiqueta de la base, lo que se copia, lo que se descarga, quién ejecuta el proceso— y a leer el informe de un linter de Dockerfile sin tratar todo como igual de grave. Todo es lectura de archivos ficticios; no se construye ni se ejecuta nada.
Objetivo de la sala
En el módulo 5 viste que la base viaja dentro de la imagen. Aquí subes un escalón: el Dockerfile es la receta de la imagen y se revisa como código, línea por línea, antes de construir nada. Tagua Mensajería, una empresa de envíos, mantiene el servicio api-envios y tú revisas su receta en el repositorio. Aprendes a ver qué decide cada instrucción —la etiqueta de la base, lo que se copia, lo que se descarga, quién ejecuta el proceso— y a leer el informe de un linter de Dockerfile sin tratar todo como igual de grave. Todo es lectura de archivos ficticios; no se construye ni se ejecuta nada.La primera línea de un Dockerfile, FROM, decide sobre qué se construye todo lo demás. Una etiqueta como latest o 2.4 es un nombre que alguien puede mover: hoy apunta a una imagen y mañana a otra, sin que tu archivo cambie ni una letra. Dos construcciones del mismo Dockerfile, con una semana de diferencia, pueden producir imágenes distintas, y cuando algo falla nadie puede reproducir lo que se desplegó. El digest (@sha256:…) es la huella del contenido: identifica una imagen concreta y no se puede reasignar.
Fijar la base por digest —y actualizarlo a propósito, con una revisión— convierte «lo que salió ayer» en algo que se puede volver a construir y auditar. Es lo contrario de confiar en que la etiqueta no se mueva.
Responde para continuar
El FROM de un Dockerfile usa una etiqueta que no está fijada. ¿Qué riesgo tiene frente a fijar la base por digest?
Ver pista de ayuda
Una etiqueta es un nombre que se puede reasignar; el digest identifica el contenido.
ADD y COPY se parecen y no son lo mismo. COPY trae archivos del contexto de construcción, que es lo que tú le entregas al constructor. ADD además sabe descargar una dirección de internet y descomprimir archivos, y por eso es una puerta: lo que baja entra en una capa de la imagen sin que nada compruebe de dónde viene ni que sea el mismo archivo de ayer. La práctica segura es usar COPY para lo propio y, si hay que descargar algo, hacerlo con una suma de verificación comprobada o, mejor, traerlo a través del proceso de dependencias que ya se controla.
Abre el Dockerfile de api-envios y busca la instrucción que descarga algo de una dirección externa.
Responde para continuar
Escribe el nombre del archivo que la instrucción ADD del Dockerfile descarga de internet.
Ver pista de ayuda
Con la terminal, `cat Dockerfile`. Busca la línea ADD; el nombre del archivo es lo último de la dirección.
COPY . /app copia todo el contexto: cada archivo de la carpeta desde la que se construye. Si en esa carpeta hay un archivo de variables de un desarrollador, el historial de git o un informe, también entran en la imagen y viajan con ella a cada registro y a cada nodo. El archivo .dockerignore es el filtro del contexto: lista lo que no debe entrar. Un .dockerignore que excluye los módulos instalados y los registros pero olvida un archivo de configuración local no protege nada de lo importante.
Un buen .dockerignore se escribe por exclusión de lo sensible y, mejor aún, la receta copia solo las carpetas que necesita en vez de todo el contexto.
Responde para continuar
Compara la carpeta del proyecto con el .dockerignore. Escribe el nombre del archivo con variables locales que COPY . metería en la imagen porque nadie lo excluyó.
Ver pista de ayuda
Haz `ls` en la carpeta del proyecto y luego `cat .dockerignore`; busca lo que está en la primera y no en la segunda.
Si un Dockerfile no tiene instrucción USER, el proceso final corre como root dentro del contenedor. Dentro del contenedor, root no es root del servidor, pero sigue siendo el usuario más poderoso del aislamiento: si el servicio tiene una falla, quien la aproveche parte con los permisos más altos, puede escribir en todo el sistema de archivos de la imagen y tiene a mano todos los mecanismos de escape que existan. Declarar un usuario sin privilegios no arregla la falla, pero reduce lo que se consigue con ella.
El linter marca esta ausencia como la única que bloquea la fusión, porque es una decisión de la receta y se corrige con una línea.
Responde para continuar
Un Dockerfile termina sin ninguna instrucción USER. ¿Qué significa para el servicio una vez desplegado?
Ver pista de ayuda
Sin USER, el constructor usa el usuario por defecto de la base. ¿Cuál suele ser?
Un linter devuelve una lista de hallazgos y no todos pesan igual. Una etiqueta mutable, una herramienta de depuración que sobra o una copia que rompe el caché de capas son deuda: se corrigen en el ciclo. Que el proceso corra como root es distinto: es una puerta abierta de una línea. La política del equipo ya decide qué efecto detiene la fusión; tu trabajo es leerla y señalar cuál de los hallazgos es el que la dispara, no inventar una lista de prioridades propia.
Abre el informe del linter y busca la fila cuyo efecto es el que detiene la fusión.
Responde para continuar
Escribe el código del hallazgo del informe del linter que bloquea la fusión.
Formato esperado: LD-___
Ver pista de ayuda
Con `cat reportes/linter-dockerfile.txt`, mira la columna «efecto»: solo una fila dice BLOQUEA.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.