Docker para desarrolladores: qué es y cómo empezar
Docker para desarrolladores: qué es y cómo empezar
Docker es una herramienta que ha revolucionado la manera en que los desarrolladores construyen, distribuyen y ejecutan aplicaciones. En este post te explicaré qué es Docker y sus conceptos clave para que puedas empezar a usarlo en tu flujo de trabajo.
¿Qué es Docker?
Docker es una plataforma de código abierto que permite automatizar el despliegue, escalado y gestión de aplicaciones mediante contenedores. Permite empaquetar aplicaciones con todas sus dependencias en unidades estandarizadas llamadas contenedores.
La diferencia con una máquina virtual es que los contenedores comparten el kernel del sistema operativo anfitrión, por lo que son mucho más ligeros y arrancan en segundos.
Conceptos clave
1. Contenedores
Los contenedores son paquetes ligeros, autónomos y ejecutables que incluyen todo lo necesario para ejecutar un software: el código, el runtime, las herramientas del sistema, las librerías y la configuración.
2. Imágenes
Las imágenes de Docker son los planos de los contenedores. Son plantillas de solo lectura que contienen un conjunto de instrucciones para crear un contenedor. Las imágenes se almacenan en registros como Docker Hub.
3. Dockerfile
Un Dockerfile es un archivo de texto que contiene todos los comandos necesarios para construir una imagen. Automatiza el proceso de creación de imágenes de Docker.
Ventajas de usar Docker
- Consistencia entre entornos de desarrollo, pruebas y producción.
- Mejor colaboración entre equipos de desarrollo y operaciones.
- Despliegue y escalado más rápidos.
- Uso eficiente de los recursos del sistema.
Comandos Docker esenciales
Una vez instalado Docker, estos son los comandos que más vas a usar:
# Descargar una imagen de Docker Hub
docker pull python:3.9
# Listar imágenes descargadas
docker images
# Ejecutar un contenedor
docker run -p 5000:5000 mi-app
# Listar contenedores en ejecución
docker ps
# Listar todos los contenedores (incluyendo detenidos)
docker ps -a
# Detener un contenedor
docker stop <id-del-contenedor>
# Eliminar un contenedor
docker rm <id-del-contenedor>
# Ver los logs de un contenedor
docker logs <id-del-contenedor>
Ejemplo: dockerizando una aplicación web con Python
Veamos un ejemplo básico de cómo containerizar una aplicación Flask.
1. La aplicación
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return '¡Hola desde Docker!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
2. El Dockerfile
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install flask
EXPOSE 5000
CMD ["python", "app.py"]
3. Construir y ejecutar
docker build -t mi-flask-app .
docker run -p 5000:5000 mi-flask-app
Este ejemplo demuestra lo fácil que es containerizar una aplicación con Docker, garantizando que funcionará igual en cualquier entorno.
Siguiente paso: Docker Compose
Cuando tu aplicación necesita varios servicios (por ejemplo, un servidor web + una base de datos), usar docker run para cada uno se vuelve tedioso. Docker Compose permite definir y levantar todos los servicios con un solo comando:
# docker-compose.yml
services:
web:
build: .
ports:
- "5000:5000"
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secreto
docker compose up
Con este archivo, levantas toda la infraestructura de tu app en un solo comando.
Conclusión
Docker simplifica enormemente el trabajo de los desarrolladores al eliminar el clásico "en mi máquina funciona". Si también trabajas con Node.js, puedes aplicar los mismos conceptos para dockerizar tu servidor Express o para aislar tu base de datos MySQL en un contenedor.
¿Te gustó lo que leíste?
Suscríbete para recibir los nuevos posts en tu email.