Como instalar Docker en Debian 12 paso a paso
Índice de contenidos
- Puntos clave
- Por qué no usar el paquete de Debian
- Preparar el terreno
- Clave GPG y repositorio
- Instalar los paquetes correctos
- Verificación y grupo docker
- Configuración que evita sorpresas
- Problemas que aparecen siempre
- Conclusión
- Preguntas frecuentes
- ¿Por qué instalar Docker desde el repositorio oficial en lugar del paquete de Debian?
- ¿Cómo ejecutar Docker sin sudo en Debian?
- ¿Docker Compose viene incluido con Docker en Debian?
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.iode 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-pluginydocker-compose-plugin. - Pertenecer al grupo
dockerequivale a tener root en la máquina; evalúa Docker rootless en servidores compartidos. - Configura rotación de logs y
live-restoreendaemon.jsondesde el primer día para evitar los problemas más comunes. docker run hello-worldque 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:
sudo apt-get remove docker docker-engine docker.io containerd runcEsto 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:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupgClave 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.
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/nullLa directiva signed-by= hace la clave exclusiva de ese repositorio — APT solo aceptará firmas de Docker para paquetes de download.docker.com.
Instalar los paquetes correctos
Docker no es un único binario sino un conjunto de piezas con funciones distintas:
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
docker-buildx-plugin docker-compose-pluginQué hace cada uno:
docker-ce: el daemondockerdque escucha en el socket Unix y orquesta contenedores.docker-ce-cli: el clientedockerque 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:
docker --version
docker compose version
docker run hello-worldSi 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.
sudo usermod -aG docker $USER
newgrp dockerConfiguració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:
{
"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.
Problemas que aparecen siempre
permission deniedal invocardockersin sudo: el cambio de grupo no se aplicó a la sesión.newgrp dockerlo resuelve.Cannot connect to the Docker daemon:dockerdno está corriendo.systemctl status dockeryjournalctl -u docker -n 100revelan la causa.- Pulls lentos: límites de Docker Hub o problemas de DNS. Un
registry-mirrorslocal es el remedio. - Disco lleno:
docker system prune -a --volumeslibera 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.