Capítulo 1 de 3 · Docker desde cero

Tu primer contenedor

Qué es un contenedor por dentro, cómo se ejecuta y en qué se diferencia de verdad de una máquina virtual.

2 min de lecturaActualizado el 28 de agosto de 2026

Voy a empezar por desmontar la idea más extendida: un contenedor no es una máquina virtual pequeña. Es un proceso normal y corriente de tu sistema operativo, solo que se ejecuta con una vista recortada del sistema de ficheros, de la red y de la tabla de procesos.

Si te quedas con eso, el resto de la guía se entiende solo.

Cómo funciona por dentro

El kernel es el mismo para todos los contenedores y para el anfitrión. Lo que cambia es lo que cada proceso puede ver y cuánto puede consumir:

  • Namespaces aíslan lo que el proceso ve: PIDs, interfaces de red, puntos de montaje, usuarios.
  • cgroups limitan lo que puede gastar: CPU, memoria, E/S.
  • Sistema de ficheros por capas: la imagen aporta un árbol de solo lectura y el contenedor escribe en una capa encima que se pierde cuando termina.

Vamos a ejecutar algo

  1. Arranca un contenedor interactivo:

    docker run --rm -it alpine:3.20 sh
  2. Ya dentro, mira qué procesos hay:

    ps aux
  3. Sal con exit. El flag --rm hace que el contenedor se borre al terminar, así no acumulas basura.

Deberías ver algo parecido a esto:

PID   USER     TIME  COMMAND
    1 root      0:00 sh
    7 root      0:00 ps aux

Fíjate en que tu shell es el PID 1. No es un detalle menor. En un contenedor, cuando el PID 1 muere, el contenedor termina. Más adelante esto explica unos cuantos comportamientos raros con señales y procesos hijos.

Lo que escribes dentro se pierde

La capa de escritura desaparece con el contenedor. Lo puedes comprobar en dos líneas:

docker run --rm alpine:3.20 sh -c 'echo hola > /tmp/nota'
docker run --rm alpine:3.20 cat /tmp/nota   # No such file or directory

Para conservar datos se monta un volumen:

docker volume create datos
docker run --rm -v datos:/data alpine:3.20 sh -c 'echo hola > /data/nota'
docker run --rm -v datos:/data alpine:3.20 cat /data/nota   # hola

Los comandos que vas a usar todos los días

Comando Para qué sirve
docker ps -a Lista los contenedores, incluidos los parados
docker logs -f <id> Sigue la salida de un contenedor en directo
docker exec -it <id> sh Abre una shell dentro de uno que ya está corriendo
docker inspect <id> Vuelca toda su configuración en JSON
docker system df Te dice cuánto disco se están comiendo imágenes y volúmenes

Con esto ya puedes ejecutar imágenes de otros. En el siguiente capítulo construimos la tuya.