Guia completa de Docker
Docker permite empaquetar aplicaciones con sus dependencias en imagenes reproducibles y ejecutarlas como contenedores. Es una herramienta base para desarrollo local, pruebas, despliegues, laboratorios de bases de datos y entornos consistentes.
Este manual busca ir mas alla de los comandos: explica como funciona Docker por dentro, como disenar imagenes mantenibles, como diagnosticar problemas y como llevar una aplicacion real hacia un entorno parecido a produccion.
Docker Compose tiene su propio manual en Cloud. Aqui se usa cuando aporta contexto al proyecto final, pero el detalle de Compose vive alli para evitar duplicar contenido.
Capitulos
- Introduccion
- Imagenes y Dockerfile
- Contenedores
- Volumenes y redes
- Logs, debug y diagnostico
- Buenas practicas
- Arquitectura interna
- Capas y overlay filesystem
- Namespaces y cgroups
- Registries y distribucion de imagenes
- Seguridad
- Docker en desarrollo local
- Nginx y despliegue de aplicaciones
- CI/CD con Docker
- Troubleshooting
- Proyecto final
Mapa mental
flowchart TD
A["Docker CLI"] --> B["Docker Engine"]
B --> C["Images"]
B --> D["Containers"]
D --> E["Volumes"]
D --> F["Networks"]
C --> G["Registry"]
G --> CConceptos clave
- Imagen: plantilla inmutable con sistema de archivos, dependencias y configuracion.
- Contenedor: proceso aislado creado a partir de una imagen.
- Dockerfile: receta declarativa para construir una imagen.
- Build context: conjunto de archivos que Docker recibe durante el build.
- Volume: almacenamiento persistente gestionado por Docker.
- Bind mount: montaje de una ruta del host dentro del contenedor.
- Network: red virtual para conectar contenedores.
- Registry: repositorio de imagenes, como Docker Hub o GitHub Container Registry.
Instalacion y comprobacion
docker --version
docker version
docker info
docker run hello-worldPrimer contenedor
docker run --name web-demo -p 8080:80 nginx:alpineAbrir:
http://localhost:8080Detener y eliminar:
docker stop web-demo
docker rm web-demoQue problema resuelve
Docker reduce diferencias entre maquinas:
mi maquina funciona
servidor falla
dependencia cambia
version del runtime distintaCon Docker, el runtime, librerias y configuracion base viajan como imagen. Eso no elimina todos los problemas, pero hace el entorno mucho mas reproducible.
Cuando usar Docker
- Entornos locales reproducibles.
- APIs y servicios backend.
- Bases de datos para desarrollo.
- Pipelines de CI.
- Builds consistentes.
- Despliegues empaquetados.
- Laboratorios de tecnologias.
Cuando no basta con Docker
Docker no sustituye:
- Orquestacion compleja.
- Gestion de secretos.
- Observabilidad.
- Backups.
- Hardening de servidores.
- Diseno de despliegue.
Idea clave
Docker no es una maquina virtual ligera. Un contenedor es un proceso aislado que comparte el kernel del host y usa mecanismos del sistema operativo como namespaces, cgroups y capas de filesystem.
