Contenedores Docker: De Dockerfile a Contenedor en Ejecución
Introducción: El Proceso de Creación de Contenedores con Docker
Docker permite empaquetar aplicaciones y sus dependencias en contenedores ligeros, portátiles y eficientes. Este tutorial te llevará a través del proceso de creación de contenedores, desde escribir un Dockerfile hasta ejecutar un contenedor funcional.
Paso 1: Crear un Dockerfile
El Dockerfile es un archivo de texto que define las instrucciones para construir una imagen Docker. Es el punto de partida para empaquetar tu aplicación.
Ejemplo de Dockerfile:
Imaginemos que queremos crear un contenedor para una aplicación Node.js:
# Usa una imagen base de Node.js
FROM node:16
# Define el directorio de trabajo dentro del contenedor
WORKDIR /app
# Copia el archivo package.json al contenedor
COPY package*.json ./
# Instala las dependencias de la aplicación
RUN npm install
# Copia el resto de los archivos de la aplicación
COPY . .
# Expone el puerto en el que la aplicación se ejecutará
EXPOSE 3000
# Define el comando que se ejecutará al iniciar el contenedor
CMD ["npm", "start"]
Paso 2: Construir una Imagen Docker con docker build
Una vez que tienes tu Dockerfile, puedes construir una imagen Docker ejecutando el comando docker build
.
Comando:
docker build -t nombre-de-la-imagen .
-t
: Permite asignar un nombre a la imagen..
: Especifica el contexto de construcción, normalmente el directorio actual.
Ejemplo:
docker build -t mi-app-node .
Resultado: Se generará una imagen llamada mi-app-node
que contiene tu aplicación Node.js y todas sus dependencias.
Paso 3: Ejecutar un Contenedor con docker run
Después de construir la imagen, puedes usar docker run
para crear y ejecutar un contenedor basado en esa imagen.
Comando:
docker run -d -p 3000:3000 --name mi-contenedor mi-app-node
-d
: Ejecuta el contenedor en segundo plano (modo detached).-p
: Mapea un puerto del host (3000) al puerto del contenedor (3000).--name
: Asigna un nombre al contenedor.mi-app-node
: Es el nombre de la imagen a usar.
Resultado: Tu aplicación estará disponible en el puerto 3000 del host.
Proceso Completo: Desde Dockerfile a Contenedor
- Crear un Dockerfile: Define las instrucciones para construir la imagen.
- Construir la Imagen: Usa
docker build
para convertir el Dockerfile en una imagen. - Ejecutar el Contenedor: Usa
docker run
para crear y ejecutar un contenedor basado en la imagen.
Verificar el Proceso
Listar Imágenes:
docker images
Este comando muestra las imágenes disponibles en tu máquina.
Listar Contenedores:
docker ps
Este comando muestra los contenedores en ejecución. Para listar todos los contenedores (incluidos los detenidos):
docker ps -a
Ejemplo Práctico: Crear y Ejecutar un Contenedor para Node.js
1. Escribir el Dockerfile:
Usa el ejemplo de Dockerfile proporcionado anteriormente.
2. Construir la Imagen:
docker build -t mi-app-node .
3. Ejecutar el Contenedor:
docker run -d -p 3000:3000 --name mi-app-node-container mi-app-node
4. Verificar la Aplicación:
Abre tu navegador y visita http://localhost:3000
.
Conclusión
El proceso de creación de contenedores con Docker, desde un Dockerfile hasta un contenedor en ejecución, es fundamental para garantizar la portabilidad, escalabilidad y consistencia de tus aplicaciones. Comprender este flujo no solo mejora tu desarrollo, sino que también te prepara para implementar proyectos reales con mayor eficiencia.
Referencias: