0.1 · Para qué sirve Docker: contenedores frente a máquinas virtuales

Fundamentos

0.1Para qué sirve Docker: contenedores frente a máquinas virtuales

Objetivo: Comprender qué es un contenedor, qué aporta Docker y cuándo ya no basta.
Tiempo estimado: 10 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

Lo esencial en 30 segundos

  • Docker empaqueta la aplicación Y su entorno en un paquete estándar, el contenedor: se acabó el «en mi máquina funciona».
  • El contenedor comparte el núcleo del anfitrión y solo aísla lo necesario: arranque en segundos, peso en megabytes — no es una VM.
  • Ejecutamos imágenes versionadas, idénticas en todas partes; a gran escala añadimos un orquestador (Swarm, Kubernetes).

Minicaso hilado — Idir está harto del «en mi máquina funciona» en Argel

Idir, devops junior en Argel, entrega un sitio que funciona en su portátil pero falla en el servidor de pruebas: versión de Node diferente, Redis ausente, variable olvidada. Aplica la parrilla de la sección: el problema viene del entorno, no del código → empaqueta la aplicación Y su entorno en imágenes versionadas (sitio + caché Redis), lanzadas como contenedores. La misma imagen en su portátil, el servidor de pruebas y producción: el mismo comportamiento en todas partes. También anota el límite: para dos contenedores, Docker basta; para decenas de servicios críticos, hará falta un orquestador.

Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto 48h de la sección 0.1.

1. El problema: «en mi máquina funciona»

Una aplicación depende de su versión de lenguaje, sus bibliotecas, su sistema y su configuración. En el equipo del desarrollador todo funciona, en producción todo falla. Docker responde a este azote embarcando la aplicación Y su entorno en un paquete estándar: el contenedor. Idir retiene la imagen: el código viaja con su maleta, no solo.

2. Contenedor frente a máquina virtual: la verdadera diferencia

Una máquina virtual virtualiza un ordenador entero (sistema invitado + núcleo + recursos reservados): es pesada y lenta de arrancar. Un contenedor comparte el núcleo del anfitrión y solo aísla lo necesario (procesos, archivos, red): arranca en segundos, pesa megabytes y se multiplica fácilmente. Es la herramienta del microservicio, no el sustituto universal del servidor. Idir decide: mismo núcleo y necesidad ligera → contenedor; núcleo diferente o aislamiento fuerte → VM.

3. Dónde se detiene Docker

Docker empaqueta y ejecuta, no orquesta a gran escala (ese es el papel de Swarm o Kubernetes), no supervisa ni sustituye la copia de seguridad ni la seguridad del sistema. Para un equipo, un servidor pequeño o una tubería CI, Docker basta; para decenas de servicios críticos, se pasa a un orquestador. Idir delimita su perímetro: Docker para empaquetar y ejecutar, el orquestador más tarde.

Error frecuente de interpretación: «Docker es una VM ligera: meto la app, la base y la caché en un solo contenedor, y supervisará y guardará todo». No, triple error. Un contenedor comparte el núcleo del anfitrión: no es una VM, y para un núcleo diferente o un aislamiento fuerte, la VM sigue siendo pertinente. Un contenedor = un rol (web, base, caché), no toda la pila en uno solo. Y Docker empaqueta y ejecuta: no supervisa ni sustituye la copia de seguridad ni la seguridad del sistema.
Del código al contenedor El código y sus dependencias se empaquetan como imagen y luego se ejecutan como contenedores idénticos en todas partes. Código + dependencias Aplicacióny bibliotecasImagen Docker PaqueteversionadoContenedores idénticos Mismocomportamiento en todas partes
El código y sus dependencias se empaquetan como imagen y luego se ejecutan como contenedores idénticos en todas partes.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Idir, devops junior en Argel, comprende el azote: su sitio funciona en su portátil pero falla en pruebas, porque la aplicación depende de su entorno (versión de lenguaje, bibliotecas, sistema, configuración). 2) Empaqueta la aplicación Y su entorno en una imagen Docker versionada, ejecutada como contenedores idénticos en todas partes — donde la VM virtualizaría un ordenador entero, pesada y lenta, el contenedor comparte el núcleo del anfitrión y arranca en segundos. 3) Retiene el límite: Docker empaqueta y ejecuta (un contenedor = un rol), pero no orquesta a gran escala, no supervisa ni sustituye la copia de seguridad ni la seguridad del sistema. Lección: misma imagen en todas partes, y orquestador solo cuando la escala lo exija.

¿Lo sabías? La cantina que viaja

undefined
undefined
undefined
undefined
undefined
undefined

Misma cantina en todas partes, mismo sabor en todas partes.

🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Un sitio que funciona igual en todas partes

Idir entrega un sitio Node 20 con Redis: dos contenedores desde dos imágenes versionadas, sin instalar Node ni Redis en la máquina.

docker run -d -p 3000:3000 --name site mon-app:1.0
docker run -d --name cache redis:7

Lectura: dos contenedores arrancados desde dos imágenes versionadas, sin instalar Node ni Redis en la máquina.

Lección: el portátil, el servidor de pruebas y producción ejecutan exactamente las mismas imágenes.

Vocabulario de la sección

Contenedor
Un proceso aislado + su sistema de archivos, arrancado desde una imagen.

Ejemplo sencillo: Idir lanza el contenedor site desde la imagen mon-app:1.0.

Lo que no es: una máquina virtual completa con su núcleo.

Reflejo: ligero, rápido, un rol por contenedor.

Imagen
El modelo inmutable y versionado del que nacen los contenedores.

Ejemplo sencillo: Idir fija mon-app:1.0: mismas dependencias en todas las máquinas.

Lo que no es: un contenedor vivo que se modifica.

Reflejo: siempre una etiqueta de versión explícita, nunca latest en producción.

Docker Engine
El motor que construye, almacena y ejecuta imágenes y contenedores.

Ejemplo sencillo: Idir verifica que el motor está en marcha antes de lanzar su sitio.

Lo que no es: el simple comando docker tecleado.

Reflejo: motor detenido = ningún contenedor arranca.

Registro
El depósito de imágenes versionadas (Docker Hub, GHCR).

Ejemplo sencillo: Idir obtiene redis:7 desde el registro en lugar de instalarlo.

Lo que no es: el disco local de la máquina.

Reflejo: nombrar la imagen con su etiqueta antes de compartirla.

Mapeo de puertos
La redirección -p 3000:3000 entre la máquina y el contenedor.

Ejemplo sencillo: Idir alcanza su sitio en el puerto 3000 gracias al mapeo 3000:3000.

Lo que no es: el puerto interno solo, sin exposición.

Reflejo: ¿inalcanzable? verificar el -p primero.

En la práctica — En la práctica — Situar Docker en tu contexto

  1. Enumera tres programas que instalas con dificultad (versiones, conflictos, docs), como Idir con Node y Redis.
  2. Para cada uno, di si un contenedor versionado resolvería el problema.
  3. Detecta un caso donde una VM seguiría siendo preferible (núcleo diferente, aislamiento fuerte).
  4. Formula en una frase lo que Docker te va a aportar.
Sabes decir cuándo Docker es la herramienta adecuada — y cuándo no lo es.

Guion paso a paso — delimitar el caso de Idir antes de instalar (3 min)

1) Escribe el dúo de Idir: aplicación + entorno (p. ej. sitio Node 20 + Redis) que diverge entre portátil y servidor. 2) Divide en roles: un contenedor site, un contenedor cache — nunca todo en uno solo. 3) Anota la imagen versionada objetivo por rol (p. ej. mon-app:1.0, redis:7): misma imagen en todas las máquinas. 4) Marca el límite: 2 contenedores → Docker basta; núcleo diferente o aislamiento fuerte → VM; decenas de servicios → orquestador más tarde.

Guarda esta ficha: las secciones 0.2 a 0.4 la transforman en comandos reales.

Modelo copiar-pegar — ¿mi ficha Docker o VM?

Cas : ___ (ex. site Node 20 + Redis d'Idir).
Rôles : [ ] site / [ ] base / [ ] cache → 1 conteneur par rôle.
Images versionnées : ___:___ + ___:___ (jamais latest en production).
Tranchant : [ ] même noyau + léger → conteneur / [ ] noyau différent ou isolement fort → VM.
Échelle : [ ] poste / petit serveur / CI → Docker suffit / [ ] dizaines de services → orchestrateur.

Sitio + caché

Idir entrega su sitio Node 20 con Redis: dos contenedores versionados, cero instalación local de Node o Redis.

Núcleo diferente

Idir debe probar un sistema con un núcleo diferente: conserva una VM, pues el contenedor comparte el núcleo del anfitrión.

Servidor pequeño

Dos o tres servicios en un servidor pequeño: Idir se queda con Docker, sin orquestador.

Tubería CI

Cada compilación reproduce las mismas imágenes versionadas: Idir elimina el «en mi máquina funciona» de la CI.

✓ Buenas prácticas

  • Piensa en imagen versionada: nunca «latest» en producción.
  • Apunta a un contenedor = un rol (web, base, caché).
  • Conoce el límite: la orquestación es el paso siguiente.

✗ Errores frecuentes

  • Creer que Docker = una VM ligera (el núcleo se comparte).
  • Meter base + app + caché en el mismo contenedor.
  • Esperar de Docker la supervisión y la copia de seguridad.

Puntos clave

  • Docker empaqueta la app Y su entorno.
  • El contenedor comparte el núcleo: ligero y rápido.
  • Ejecutamos imágenes versionadas, idénticas en todas partes.
  • A gran escala, añadimos un orquestador.

Reto 48h — aplica mañana

Rellena la ficha Docker o VM del modelo sobre UN caso real (el de Idir o el tuyo): roles, imágenes versionadas, decisión contenedor/VM — en una frase, di lo que Docker te va a aportar.

Lista de salida de la sección
  • Puedo explicar en una frase lo que aporta Docker (app + entorno, misma imagen en todas partes).
  • Sé decidir contenedor (ligero, mismo núcleo) frente a VM (núcleo diferente, aislamiento fuerte).
  • Conozco el límite: orquestación, supervisión y copia de seguridad están fuera de Docker.
Autoevaluación 1-5: ¿explico la diferencia contenedor / VM sin jerga?Autoevaluación 1-5: ¿he delimitado un caso real en roles + imágenes versionadas?

Preguntas frecuentes

¿Docker sustituye a una máquina virtual?

No: la VM aísla un sistema completo con su núcleo, el contenedor comparte el del anfitrión. Para núcleos diferentes (Windows frente a Linux) o un aislamiento fuerte, la VM sigue siendo pertinente. Idir mantiene el reflejo: mismo núcleo y necesidad ligera → contenedor; si no → VM.

¿Hay que ser administrador de sistemas para usar Docker?

No: lo básico (run, ps, logs, volúmenes, Compose) se aprende en unas horas. La administración fina (redes, registros, seguridad) viene después, nivel por nivel — exactamente la progresión de esta guía.

Comprueba tu comprensión

¿Qué hace la verdadera fuerza de Docker frente a una instalación clásica?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 0Preguntas inéditas y más difíciles para validar tus conocimientos