Skip to content

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 ​

  1. Introduccion
  2. Imagenes y Dockerfile
  3. Contenedores
  4. Volumenes y redes
  5. Logs, debug y diagnostico
  6. Buenas practicas
  7. Arquitectura interna
  8. Capas y overlay filesystem
  9. Namespaces y cgroups
  10. Registries y distribucion de imagenes
  11. Seguridad
  12. Docker en desarrollo local
  13. Nginx y despliegue de aplicaciones
  14. CI/CD con Docker
  15. Troubleshooting
  16. Proyecto final

Mapa mental ​

mermaid
flowchart TD
  A["Docker CLI"] --> B["Docker Engine"]
  B --> C["Images"]
  B --> D["Containers"]
  D --> E["Volumes"]
  D --> F["Networks"]
  C --> G["Registry"]
  G --> C

Conceptos 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 ​

bash
docker --version
docker version
docker info
docker run hello-world

Primer contenedor ​

bash
docker run --name web-demo -p 8080:80 nginx:alpine

Abrir:

txt
http://localhost:8080

Detener y eliminar:

bash
docker stop web-demo
docker rm web-demo

Que problema resuelve ​

Docker reduce diferencias entre maquinas:

txt
mi maquina funciona
servidor falla
dependencia cambia
version del runtime distinta

Con 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.