Docker

Qué es Docker, para qué sirve y cómo usar sus comandos básicos junto con un Dockerfile para construir y ejecutar contenedores.

docker

Docker permite encapsular una aplicación con todas sus dependencias en una imagen que luego se ejecuta en forma de contenedor. Esto nos ayuda a construir entornos reproducibles desde desarrollo hasta producción.

¿Qué es Docker?

Docker es una plataforma que automatiza la creación, despliegue y ejecución de aplicaciones mediante contenedores. Un contenedor es una unidad de software que agrupa código, runtime, librerías y configuraciones necesarias para ejecutar una aplicación de forma aislada.

No es una máquina virtual. Es más ligero porque comparte el kernel del sistema operativo host. Al no incluir un sistema completo, los contenedores arrancan rápidamente y consumen menos recursos.

Podemos crear una imagen con todo lo que necesitamos y ejecutarla en cualquier entorno que tenga Docker instalado. Eso simplifica los despliegues y reduce problemas por diferencias de configuración.

¿Por qué es importante en DevOps?

Dentro de un flujo DevOps, Docker facilita varias tareas:

  • Automatización: Podemos definir la configuración exacta de una aplicación en un Dockerfile y automatizar su construcción e integración.
  • Pruebas consistentes: Las pruebas se ejecutan en el mismo entorno en el que se despliega, reduciendo errores.
  • Integración continua: Las imágenes se integran fácilmente con pipelines de CI/CD (GitLab, GitHub Actions, Jenkins).
  • Despliegue predecible: El mismo contenedor que usamos localmente puede desplegarse en producción sin modificaciones.

Estas ventajas nos permiten reducir tiempo y errores en el ciclo de desarrollo y despliegue.

El Dockerfile

El Dockerfile es un archivo de texto que define cómo construir una imagen. Incluye una serie de instrucciones que Docker sigue para crearla. Un ejemplo simple:

# Imagen base
FROM node:22
# Directorio de trabajo
WORKDIR /app
# Copiamos dependencias
COPY package*.json ./
# Instalamos dependencias
RUN npm install
# Copiamos el resto del código
COPY . .
# Puerto expuesto
EXPOSE 3000
# Comando de inicio
CMD ["npm", "start"]

Este archivo crea una imagen de Node.js lista para ejecutar una aplicación. Lo útil es que podemos reproducir este entorno exacto en cualquier máquina.

Comandos básicos para trabajar con contenedores

Veamos algunos comandos que usamos con frecuencia en el ciclo de vida de los contenedores:

Terminal
# Construir una imagen desde un Dockerfile previamente creado en el mismo directorio
docker build -t mi-app .
# Ver las imágenes disponibles localmente
docker images
# Ejecutar un contenedor basado en una imagen
docker run -p 3000:3000 mi-app
# Ver los contenedores en ejecución
docker ps
# Detener un contenedor
docker stop <ID_CONTAINEDOR>
# Eliminar una imagen
docker rmi mi-app

Conclusión

Esta ha sido una breve introducción a Docker. En el mundo de DevOps esta tecnología representa un antes y un después a la hora de desplegar aplicaciones en todos los entornos posibles.