1. Introducción a Docker
Docker es una plataforma que permite empaquetar aplicaciones y sus dependencias en un entorno aislado y portátil llamado contenedor. A diferencia de una máquina virtual, un contenedor no necesita un sistema operativo completo, sino que comparte el kernel con el sistema anfitrión, lo que lo hace más ligero y eficiente.
¿Qué es Docker?
Docker es un software de código abierto que automatiza la implementación de aplicaciones dentro de contenedores. Estos contenedores son instancias de imágenes que definen todo lo necesario para ejecutar una aplicación (binarios, librerías, configuraciones, etc.).
Los contenedores permiten:
- Ejecutar la misma aplicación en cualquier sistema (portabilidad)
- Aislar procesos y entornos (seguridad y estabilidad)
- Reproducir entornos de desarrollo, prueba y producción (consistencia)
Contenedores vs máquinas virtuales
| Característica | Máquina Virtual | Contenedor Docker |
|---|---|---|
| Sistema operativo | Completo (guest OS) | Comparte kernel con host |
| Uso de recursos | Alto | Bajo |
| Tiempo de arranque | Lento (varios segundos) | Rápido (milisegundos) |
| Portabilidad | Menor | Alta |
| Tamaño de imagen | Varios GB | Decenas o cientos de MB |
Conceptos clave
- Imagen: plantilla inmutable que contiene una aplicación y todo lo necesario para ejecutarla.
- Contenedor: instancia en ejecución de una imagen.
- Dockerfile: archivo de texto que describe cómo construir una imagen.
- Docker Hub: repositorio público (también puede ser privado) donde se almacenan imágenes.
- Volumen: mecanismo para persistir datos fuera del ciclo de vida del contenedor.
- Red: sistema de comunicación entre contenedores.
Ejemplo básico
docker run hello-world
Este comando:
- Descarga una imagen llamada
hello-world(si no está en caché) - Crea un contenedor a partir de ella
- Lo ejecuta
- Muestra un mensaje de prueba
¿Por qué usar Docker?
- Evita el clásico "en mi máquina funcionaba"
- Facilita el despliegue en producción
- Mejora la organización y mantenimiento de servicios
- Permite usar herramientas libres autoalojadas
Relación con el software libre
Docker, aunque tiene una empresa detrás, se basa en estándares abiertos y cuenta con una comunidad muy activa. Muchas de las imágenes disponibles (como Nginx, PostgreSQL, Nextcloud, etc.) son de proyectos libres, lo que permite construir soluciones enteramente con software de código abierto.