Desde los conceptos básicos hasta las compilaciones de múltiples etapas

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Docker ha revolucionado la forma en que desarrollamos, distribuimos y ejecutamos aplicaciones. En el corazón de la funcionalidad de Docker está la capacidad de crear imágenes personalizadas adaptadas a nuestras necesidades específicas. En este desafío, explorarás el poder y la flexibilidad del comando docker build, aprendiendo cómo crear imágenes Docker para una variedad de escenarios.

Desde aplicaciones simples hasta configuraciones más complejas que involucren dependencias y variables de entorno, adquirirás experiencia práctica con los conceptos fundamentales de la creación de imágenes Docker. Al final de este desafío, tendrás una base sólida en la construcción de imágenes Docker eficientes y efectivas, una habilidad crucial en los flujos de trabajo modernos de desarrollo y despliegue de software.

¡Comencemos nuestro viaje al mundo de la construcción de imágenes Docker!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/run -.-> lab-389193{{"Desde los conceptos básicos hasta las compilaciones de múltiples etapas"}} docker/ps -.-> lab-389193{{"Desde los conceptos básicos hasta las compilaciones de múltiples etapas"}} docker/images -.-> lab-389193{{"Desde los conceptos básicos hasta las compilaciones de múltiples etapas"}} docker/build -.-> lab-389193{{"Desde los conceptos básicos hasta las compilaciones de múltiples etapas"}} end

Construcción básica de Docker

Comenzaremos con los conceptos básicos. En este paso, crearás una simple imagen Docker que muestre el mensaje "¡Hola, Mundo!". Esto te familiarizará con la estructura básica de un Dockerfile y el comando docker build.

Tareas

  1. Navega al directorio hello-world bajo /home/labex/project.
  2. Abre el Dockerfile en este directorio y agrega las instrucciones necesarias.
  3. Construye una imagen Docker llamada hello-world utilizando el comando docker build.

Requisitos

  • Realiza todas las operaciones en el directorio /home/labex/project/hello-world.
  • Utiliza la imagen base Alpine Linux en tu Dockerfile.
  • La imagen Docker debe imprimir "¡Hola, Mundo!" cuando se ejecute.

Ejemplo

Después de completar este paso, deberías poder ejecutar el siguiente comando y ver la salida:

$ docker run hello-world
¡Hola, Mundo!

¡Buen trabajo al crear tu primera imagen Docker! Este sencillo ejemplo demuestra los principios básicos de la creación de imágenes Docker. En el siguiente paso, aprovecharemos este conocimiento para crear una imagen más compleja con dependencias.

✨ Revisar Solución y Practicar

Construcción de una imagen Docker con dependencias

Ahora que estás familiarizado con los conceptos básicos, abordemos un escenario más realista. En este paso, crearás una imagen Docker para una aplicación de Python que utiliza el framework web Flask. Esto te introducirá al concepto de gestión de dependencias en tus imágenes Docker.

Tareas

  1. Navega al directorio flask-app bajo /home/labex/project.
  2. Abre el Dockerfile en este directorio y agrega las instrucciones necesarias para instalar las dependencias.
  3. Examina el archivo requirements.txt para entender las dependencias.
  4. Construye una imagen Docker llamada flask-app utilizando el comando docker build.

Requisitos

  • Realiza todas las operaciones en el directorio /home/labex/project/flask-app.
  • Utiliza la imagen base python:3.7-alpine en tu Dockerfile.
  • Asegúrate de que las dependencias listadas en requirements.txt estén instaladas en la imagen.
  • El Dockerfile debe copiar el archivo requirements.txt e instalar las dependencias.

Ejemplo

Después de completar este paso, deberías poder ver la imagen flask-app al listar las imágenes Docker:

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
flask-app    latest    abcdef123456   2 minutes ago   55.8MB

¡Excelente trabajo! Ahora has creado una imagen Docker que incluye dependencias externas. Este es un escenario común en aplicaciones del mundo real. En el siguiente paso, exploraremos cómo utilizar variables de entorno en nuestras imágenes Docker para hacerlas más flexibles y configurables.

✨ Revisar Solución y Practicar

Construcción de una imagen Docker con variables de entorno

La gestión de configuración es un aspecto crucial de las aplicaciones contenerizadas. En este paso, crearás una imagen Docker que utiliza una variable de entorno para establecer el número de puerto de una aplicación Flask. Esto demostrará cómo hacer que tus imágenes Docker sean más dinámicas y adaptables a diferentes entornos.

Tareas

  1. Navega al directorio flask-app-env bajo /home/labex/project.
  2. Abre el Dockerfile en este directorio y agrega instrucciones para establecer una variable de entorno.
  3. Modifica el archivo app.py para utilizar la variable de entorno para el número de puerto.
  4. Construye una imagen Docker llamada flask-app-env utilizando el comando docker build.

Requisitos

  • Realiza todas las operaciones en el directorio /home/labex/project/flask-app-env.
  • Utiliza la imagen base python:3.7-alpine en tu Dockerfile.
  • Establece una variable de entorno PORT con un valor predeterminado de 5000 en el Dockerfile.
  • Modifica la aplicación Flask para utilizar la variable de entorno PORT para establecer el puerto de escucha.
  • Asegúrate de que se instalen todos los paquetes de Python necesarios listados en requirements.txt.

Ejemplo

Después de completar este paso y ejecutar el contenedor, deberías poder acceder a la aplicación:

$ docker run -d -p 5000:5000 flask-app-env
$ curl http://127.0.0.1:5000
¡Hola, Mundo!

¡Buen trabajo! Ahora has creado una imagen Docker más flexible que puede adaptarse a diferentes entornos utilizando variables de entorno. Esta es una técnica poderosa para crear imágenes de contenedores reutilizables y configurables. En nuestro último paso, exploraremos una función avanzada de Docker: las compilaciones de múltiples etapas.

✨ Revisar Solución y Practicar

Construcción de una imagen Docker con múltiples etapas

Para nuestro último desafío, profundizaremos en las compilaciones de múltiples etapas. Esta técnica avanzada te permite crear imágenes Docker más eficientes utilizando múltiples etapas en el proceso de construcción. Crearás una imagen Docker para una aplicación de Go, utilizando una etapa para compilar el código y otra para crear una imagen ligera y lista para producción.

Tareas

  1. Navega al directorio go-app bajo /home/labex/project.
  2. Abre el Dockerfile en este directorio y agrega instrucciones para una compilación de múltiples etapas.
  3. Examina el archivo main.go para entender la sencilla aplicación de Go.
  4. Construye una imagen Docker llamada go-app utilizando el comando docker build.

Requisitos

  • Realiza todas las operaciones en el directorio /home/labex/project/go-app.
  • Utiliza golang:1.14-alpine como imagen base de la etapa de compilación y alpine como imagen base de la etapa final.
  • La aplicación de Go debe imprimir "¡Hola, Mundo!" cuando se ejecute.
  • La aplicación de Go debe compilarse utilizando el comando go build.
  • La imagen Docker final solo debe contener el binario compilado, no el entorno de desarrollo de Go.

Ejemplo

Después de completar este paso, deberías poder ejecutar el siguiente comando y ver la salida:

$ docker run go-app
¡Hola, Mundo!
✨ Revisar Solución y Practicar

Resumen

¡Felicidades por completar este completo desafío de construcción de imágenes Docker! Has recorrido un camino desde la creación de una imagen Docker básica hasta la implementación de técnicas avanzadas como las compilaciones de múltiples etapas. En el camino, has aprendido cómo:

  1. Crear una simple imagen Docker con un Dockerfile básico
  2. Gestionar dependencias en tus imágenes Docker
  3. Utilizar variables de entorno para hacer tus imágenes más flexibles
  4. Implementar compilaciones de múltiples etapas para imágenes eficientes y listas para producción

Estas habilidades forman la base del uso efectivo de Docker y te serán de gran ayuda en diversos escenarios, desde desarrollo y pruebas hasta implementaciones en producción. Has adquirido experiencia práctica con la interfaz de línea de comandos (CLI) de Docker y la sintaxis de los Dockerfiles, lo cual es invaluable para cualquier persona que trabaje con aplicaciones contenerizadas.

A medida que continúes tu viaje con Docker, recuerda que estas operaciones básicas son los bloques de construcción para flujos de trabajo de Docker más complejos. Practica estas habilidades regularmente y verás cómo te vuelves más competente en la creación y gestión de imágenes de contenedores, lo que en última instancia llevará a procesos de desarrollo e implementación más eficientes y simplificados.

Sigue explorando las capacidades de Docker y no dudes en experimentar con diferentes imágenes base, estrategias de construcción y técnicas de optimización. El mundo de la contenerización es vasto y lleno de posibilidades, y ahora estás bien equipado para navegar por él con confianza.