En este tema, aprenderás cómo construir tus propias imágenes Docker, que son esenciales para crear contenedores personalizados. Las imágenes Docker son plantillas que contienen todo lo necesario para ejecutar una aplicación, incluyendo el código, las dependencias, las herramientas y las configuraciones.
Conceptos Clave
- Dockerfile: Un archivo de texto que contiene una serie de instrucciones para construir una imagen Docker.
- Instrucciones Dockerfile: Comandos específicos que se utilizan dentro de un Dockerfile para definir cómo se debe construir la imagen.
- Construcción de Imágenes: El proceso de crear una imagen Docker a partir de un Dockerfile.
Pasos para Construir una Imagen Docker
- Crear un Dockerfile
El primer paso para construir una imagen Docker es crear un archivo llamado Dockerfile
. Este archivo contiene las instrucciones necesarias para construir la imagen.
Ejemplo de Dockerfile
# Usar una imagen base FROM python:3.8-slim # Establecer el directorio de trabajo en el contenedor WORKDIR /app # Copiar los archivos de la aplicación al contenedor COPY . /app # Instalar las dependencias RUN pip install --no-cache-dir -r requirements.txt # Exponer el puerto en el que la aplicación escuchará EXPOSE 5000 # Comando para ejecutar la aplicación CMD ["python", "app.py"]
Explicación del Dockerfile
FROM
: Especifica la imagen base a utilizar. En este caso, estamos utilizando una imagen de Python 3.8.WORKDIR
: Establece el directorio de trabajo dentro del contenedor.COPY
: Copia los archivos de la aplicación desde el host al contenedor.RUN
: Ejecuta comandos en el contenedor. Aquí, estamos instalando las dependencias de la aplicación.EXPOSE
: Indica el puerto en el que la aplicación escuchará.CMD
: Especifica el comando que se ejecutará cuando se inicie el contenedor.
- Construir la Imagen
Una vez que tengas tu Dockerfile, puedes construir la imagen utilizando el comando docker build
.
Comando para Construir la Imagen
-t my-python-app
: Etiqueta la imagen con el nombremy-python-app
..
: Indica el contexto de construcción, que es el directorio actual.
- Verificar la Imagen Construida
Después de construir la imagen, puedes verificar que se haya creado correctamente utilizando el comando docker images
.
Comando para Listar Imágenes
Esto mostrará una lista de todas las imágenes Docker en tu sistema, incluyendo la que acabas de construir.
Ejercicio Práctico
Ejercicio 1: Construir una Imagen Docker para una Aplicación Node.js
Paso 1: Crear el Dockerfile
Crea un archivo llamado Dockerfile
con el siguiente contenido:
# Usar una imagen base de Node.js FROM node:14 # Establecer el directorio de trabajo en el contenedor WORKDIR /usr/src/app # Copiar los archivos de la aplicación al contenedor COPY package*.json ./ # Instalar las dependencias RUN npm install # Copiar el resto de los archivos de la aplicación COPY . . # Exponer el puerto en el que la aplicación escuchará EXPOSE 8080 # Comando para ejecutar la aplicación CMD ["node", "server.js"]
Paso 2: Construir la Imagen
Ejecuta el siguiente comando para construir la imagen:
Paso 3: Verificar la Imagen
Utiliza el siguiente comando para verificar que la imagen se haya creado correctamente:
Solución del Ejercicio
Si has seguido los pasos correctamente, deberías ver una nueva imagen llamada my-node-app
en la lista de imágenes Docker.
Resumen
En esta sección, has aprendido cómo construir imágenes Docker utilizando un Dockerfile. Has visto un ejemplo práctico de un Dockerfile para una aplicación Python y has realizado un ejercicio para construir una imagen Docker para una aplicación Node.js. Ahora estás listo para crear tus propias imágenes Docker personalizadas.
En el próximo tema, profundizaremos en los conceptos básicos de Dockerfile, donde aprenderás más sobre las diferentes instrucciones que puedes utilizar para construir imágenes Docker.
Docker: De Principiante a Avanzado
Módulo 1: Introducción a Docker
- ¿Qué es Docker?
- Instalando Docker
- Arquitectura de Docker
- Comandos Básicos de Docker
- Entendiendo las Imágenes de Docker
- Creando tu Primer Contenedor Docker
Módulo 2: Trabajando con Imágenes Docker
- Docker Hub y Repositorios
- Construyendo Imágenes Docker
- Conceptos Básicos de Dockerfile
- Gestionando Imágenes Docker
- Etiquetado y Publicación de Imágenes
Módulo 3: Contenedores Docker
- Ejecutando Contenedores
- Ciclo de Vida del Contenedor
- Gestionando Contenedores
- Redes en Docker
- Persistencia de Datos con Volúmenes
Módulo 4: Docker Compose
- Introducción a Docker Compose
- Definiendo Servicios en Docker Compose
- Comandos de Docker Compose
- Aplicaciones Multi-Contenedor
- Variables de Entorno en Docker Compose
Módulo 5: Conceptos Avanzados de Docker
- Profundización en Redes Docker
- Opciones de Almacenamiento Docker
- Mejores Prácticas de Seguridad en Docker
- Optimizando Imágenes Docker
- Registro y Monitoreo en Docker
Módulo 6: Docker en Producción
- CI/CD con Docker
- Orquestando Contenedores con Docker Swarm
- Introducción a Kubernetes
- Desplegando Contenedores Docker en Kubernetes
- Escalado y Balanceo de Carga