Qué es Docker, para qué sirve y cómo usar sus comandos básicos junto con un Dockerfile para construir y ejecutar contenedores.
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.
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.
Dentro de un flujo DevOps, Docker facilita varias tareas:
Dockerfile
y automatizar su construcción e integración.Estas ventajas nos permiten reducir tiempo y errores en el ciclo de desarrollo y despliegue.
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 baseFROM node:22
# Directorio de trabajoWORKDIR /app
# Copiamos dependenciasCOPY package*.json ./
# Instalamos dependenciasRUN npm install
# Copiamos el resto del códigoCOPY . .
# Puerto expuestoEXPOSE 3000
# Comando de inicioCMD ["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.
Veamos algunos comandos que usamos con frecuencia en el ciclo de vida de los contenedores:
# Construir una imagen desde un Dockerfile previamente creado en el mismo directoriodocker build -t mi-app .
# Ver las imágenes disponibles localmentedocker images
# Ejecutar un contenedor basado en una imagendocker run -p 3000:3000 mi-app
# Ver los contenedores en ejecucióndocker ps
# Detener un contenedordocker stop <ID_CONTAINEDOR>
# Eliminar una imagendocker rmi mi-app
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.