Mascota Jacar — leyendo contigo Un portátil cuyos ojos siguen el cursor mientras lees.
Cómo Instalar Tecnología

Como instalar Docker en Debian 12 paso a paso

Como instalar Docker en Debian 12 paso a paso

Actualizado: 2026-05-03

Instalar Docker en Debian 12 parece un trámite mecánico — copias cuatro comandos y listo — pero hay decisiones ocultas en ese proceso que condicionan los próximos doce meses de operación. Qué repositorio usar, cómo gestionar los permisos y qué poner en daemon.json desde el primer arranque son preguntas con consecuencias reales cuando la máquina pasa de experimento a servicio expuesto.

Puntos clave

  • El paquete docker.io de Debian va varios minors por detrás; el repositorio oficial de Docker es la única elección razonable para producción.
  • La instalación estándar requiere cinco paquetes: docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin y docker-compose-plugin.
  • Pertenecer al grupo docker equivale a tener root en la máquina; evalúa Docker rootless en servidores compartidos.
  • Configura rotación de logs y live-restore en daemon.json desde el primer día para evitar los problemas más comunes.
  • docker run hello-world que imprime el mensaje verde es el principio, no el final.

Por qué no usar el paquete de Debian

Debian incluye docker.io en sus repositorios, y para jugar en un portátil es aceptable. Cuando la máquina hace trabajo real, el paquete de la distribución se queda corto:

  • La versión empaquetada va varios minors por detrás de la rama estable.
  • Los parches de seguridad tardan más en aparecer.
  • Los componentes — motor, CLI, containerd, BuildKit — no se actualizan de forma coordinada.

El repositorio oficial de Docker resuelve los tres problemas: recibes la versión actual, los parches llegan el mismo día que se publican y los componentes se actualizan como un conjunto coherente. Además, el plugin docker compose v2 viene empaquetado junto al motor, eliminando el baile histórico entre docker-compose con guión y docker compose con espacio.

Preparar el terreno

Antes de añadir nada nuevo, retira cualquier instalación previa:

bash
sudo apt-get remove docker docker-engine docker.io containerd runc

Esto limpia los binarios sin tocar imágenes ni volúmenes en /var/lib/docker y /var/lib/containerd. Con el sistema limpio, actualiza APT e instala las dependencias mínimas para añadir un repositorio firmado:

bash
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

Clave GPG y repositorio

El método moderno de Debian para añadir claves de repositorios es depositarlas en /etc/apt/keyrings/ como ficheros individuales. El viejo apt-key add lleva años marcado como deprecado porque una clave instalada globalmente firma implícitamente cualquier repositorio, rompiendo el aislamiento que APT intenta ofrecer.

bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | 
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] 
  https://download.docker.com/linux/debian 
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | 
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

La directiva signed-by= hace la clave exclusiva de ese repositorio — APT solo aceptará firmas de Docker para paquetes de download.docker.com.

Logotipo de Bash, el intérprete de comandos con el que ejecutamos todos los pasos de instalación de Docker en Debian

Instalar los paquetes correctos

Docker no es un único binario sino un conjunto de piezas con funciones distintas:

bash
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io 
  docker-buildx-plugin docker-compose-plugin

Qué hace cada uno:

  • docker-ce: el daemon dockerd que escucha en el socket Unix y orquesta contenedores.
  • docker-ce-cli: el cliente docker que habla con el daemon.
  • containerd.io: el runtime de bajo nivel que lanza los contenedores.
  • docker-buildx-plugin: construcción multiplataforma con BuildKit.
  • docker-compose-plugin: orquestador declarativo v2.

Al terminar, systemd arranca el servicio y lo deja en estado enabled.

Verificación y grupo docker

Tres comandos confirman que todo está en su sitio:

bash
docker --version
docker compose version
docker run hello-world

Si el último falla pero los dos primeros funcionan, el problema suele estar en DNS o en el registry, no en la instalación.

Añadir tu usuario al grupo docker parece cosmético pero tiene implicaciones de seguridad serias. Pertenecer al grupo equivale prácticamente a tener root en la máquina: quien puede ejecutar docker run puede montar el sistema de ficheros raíz dentro de un contenedor privilegiado. En servidor compartido, evalúa Docker rootless. En servidor personal, el grupo es aceptable si conoces el compromiso.

bash
sudo usermod -aG docker $USER
newgrp docker

Configuración que evita sorpresas

El fichero /etc/docker/daemon.json viene vacío por defecto. Dejarlo así es el primer error de producción que comete casi todo el mundo. Dos parámetros que merecen estar desde el primer día:

json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "live-restore": true
}

Sin rotación de logs, un contenedor locuaz llena el disco en días. Con live-restore, los contenedores sobreviven a un reinicio del daemon — las actualizaciones de Docker dejan de tumbar los servicios. Aplica los cambios con sudo systemctl reload docker.

Logotipo de Prometheus, herramienta de métricas que puedes usar para monitorizar el estado del daemon Docker en producción

Problemas que aparecen siempre

  • permission denied al invocar docker sin sudo: el cambio de grupo no se aplicó a la sesión. newgrp docker lo resuelve.
  • Cannot connect to the Docker daemon: dockerd no está corriendo. systemctl status docker y journalctl -u docker -n 100 revelan la causa.
  • Pulls lentos: límites de Docker Hub o problemas de DNS. Un registry-mirrors local es el remedio.
  • Disco lleno: docker system prune -a --volumes libera espacio agresivamente, incluyendo volúmenes anónimos — cuidado.

Conclusión

Lo que separa una instalación viable de una que morderá en seis meses no son los comandos del repositorio oficial, sino las decisiones que tomas justo después. Configura la rotación de logs desde el primer día. Activa live-restore. Entiende qué implica el grupo docker. Ninguna de estas cosas aparece en los tutoriales de cinco minutos, y todas importan más que el orden exacto de los paquetes. Si vas a usar el servidor con Docker Swarm, el siguiente paso es cuándo Docker Swarm sigue teniendo sentido.

Preguntas frecuentes

¿Por qué instalar Docker desde el repositorio oficial en lugar del paquete de Debian?

El paquete docker.io de Debian suele estar varias versiones por detrás de la versión estable. El repositorio oficial de Docker garantiza las últimas correcciones de seguridad y funciones como BuildKit.

¿Cómo ejecutar Docker sin sudo en Debian?

Añade tu usuario al grupo docker con sudo usermod -aG docker $USER y cierra sesión para que surta efecto. Ten en cuenta que esto equivale a permisos de root en el sistema.

¿Docker Compose viene incluido con Docker en Debian?

Desde Docker Compose v2, el plugin está integrado en el CLI de Docker como docker compose (sin guión). Se instala automáticamente con el paquete docker-compose-plugin del repositorio oficial.

¿Te ha resultado útil?
[Total: 15 · Media: 4.5]

Escrito por

CEO - Jacar Systems

Apasionado de la tecnología, la infraestructura cloud y la inteligencia artificial. Escribe sobre DevOps, IA, plataformas y software desde Madrid.