Contenido del curso
0:00/15:52
Todo lo que aprenderás sobre Docker
02:12Antes de continuar aprendiendo...
Suscríbete para ver másLas tres áreas en el desarrollo de software profesional
Suscríbete para ver másVirtualización
Suscríbete para ver másPreparando tu entorno de trabajo
Suscríbete para ver más[Bonus] Play with Docker
Suscríbete para ver másQué es y cómo funciona Docker
Suscríbete para ver másPrimeros pasos: hola mundo
Suscríbete para ver másConceptos fundamentales de Docker: contenedores
Suscríbete para ver másComprendiendo el estado de Docker
Suscríbete para ver másEl modo interactivo
Suscríbete para ver másCiclo de vida de un contenedor
Suscríbete para ver másExponiendo contenedores
Suscríbete para ver másAdministrando tu ambiente de Docker
Suscríbete para ver másDeteniendo contenedores correctamente: SHELL vs. EXEC
Suscríbete para ver másContenedores ejecutables: ENTRYPOINT vs CMD
Suscríbete para ver másEl contexto de build
Suscríbete para ver másMulti-stage build
Suscríbete para ver másDocker-in-Docker
Suscríbete para ver másConstruir tus propias imágenes de Docker es el paso fundamental para dejar de depender exclusivamente de imágenes públicas y empezar a personalizar tus entornos. Todo el proceso gira alrededor de un archivo llamado Dockerfile, el comando docker build y un sistema de capas inmutables que hace que Docker sea extraordinariamente eficiente en el uso de disco y transferencia de datos.
¿Qué es un Dockerfile y cómo inicia el proceso de build?
Un Dockerfile es un archivo de texto que describe paso a paso lo que debe ocurrir cuando se construye una imagen [01:00]. A partir de este archivo, se ejecuta el comando docker build, cuyo resultado es una imagen lista para generar contenedores. La relación es lineal: Dockerfile → build → imagen → run → contenedor.
Todos los Dockerfiles comienzan con la instrucción FROM, que indica la imagen base sobre la cual se construirá la nueva imagen [02:24]. Es obligatorio partir de algo existente: si vas a trabajar con Node, usarás una imagen de Node; si necesitas Ubuntu, partirás de Ubuntu.
dockerfile FROM ubuntu:latest RUN touch /usr/src/hola-platzi.txt
En este ejemplo, la imagen base es ubuntu:latest y el comando RUN crea un archivo dentro del sistema de archivos de la imagen. Es fundamental entender que todo lo que se define en el Dockerfile se ejecuta en tiempo de build, no cuando se inicia el contenedor [03:22]. El archivo ya existe dentro de la imagen antes de que cualquier contenedor arranque.
¿Cómo se ejecuta docker build correctamente?
Para construir la imagen se utiliza el siguiente comando [04:02]:
bash docker build -t ubuntu:platzi .
-t asigna un tag o nombre a la imagen resultante..) indica el contexto de build, que es la porción del disco a la que el proceso de construcción tiene acceso.Al ejecutar el build, Docker procesa cada instrucción del Dockerfile y genera un ID por cada paso. Cada uno de esos IDs representa una capa o layer de la imagen resultante [05:05].
¿Qué son las capas y por qué importan?
Una imagen no es un bloque monolítico: es un conjunto de capas apiladas [06:00]. Cada instrucción del Dockerfile agrega una capa nueva que solo contiene la diferencia respecto a la capa anterior. Este diseño se asemeja al esquema de árbol de Git, donde cada commit almacena únicamente los cambios incrementales.
Cuando creamos ubuntu:platzi, la capa nueva apunta a las capas de ubuntu:latest que ya existían en disco. No se duplica información, se reutiliza.
¿Cómo publicar una imagen en Docker Hub?
Antes de publicar, es necesario ajustar el nombre de la imagen para que apunte a tu repositorio personal. La nomenclatura estándar de Docker sigue el formato usuario/software:versión [09:07].
bash docker tag ubuntu:platzi tunombredeusuario/ubuntu:platzi
Esta operación de retag no copia archivos ni ocupa espacio adicional en disco. Simplemente crea un nuevo nombre que apunta a las mismas capas existentes [09:30].
Una vez renombrada la imagen, se necesita autenticarse y luego publicarla:
bash docker login docker push tunombredeusuario/ubuntu:platzi
Durante el push, Docker analiza cada capa y solo transmite las que no existen en el repositorio de destino [11:00]. En el ejemplo, las capas de Ubuntu oficial ya están disponibles en Docker Hub, así que únicamente se transfieren los pocos KB del cambio propio. Las capas restantes se montan desde library/ubuntu directamente.
¿Qué precauciones tomar al publicar imágenes?
Las imágenes publicadas de la forma descrita son públicas y cualquier persona puede descargarlas [12:10]. Algunos puntos importantes:
La eficiencia del sistema de capas inmutables se manifiesta tanto en el almacenamiento local como en la transferencia de red: Docker solo mueve lo estrictamente necesario, haciendo que tus imágenes personalizadas sean ligeras y rápidas de distribuir. Si ya experimentaste con tu primer Dockerfile, comparte qué imagen base elegiste y qué cambios aplicaste.