Esta guía cubre la instalación de Docker Engine en Debian 12 (Bookworm) desde el repositorio oficial de Docker — el método recomendado para tener versión actualizada y soporte de seguridad continuo. Incluye verificación de la instalación, configuración del grupo docker para usuario sin sudo, y troubleshooting de los problemas más comunes.
Por qué desde el repositorio oficial
Debian incluye docker.io en sus repos oficiales, pero hay razones para preferir el repo de Docker:
- Versión más reciente. El repo de Debian va por detrás; el de Docker tiene la última estable.
- Updates de seguridad rápidos. Patches de Docker llegan al repo oficial antes que a Debian.
- Componentes actualizados juntos. Engine, CLI, containerd y BuildKit alineados.
- Compatibilidad con docker-compose v2 plugin que es la versión actual.
El paquete de Debian funciona pero quedará anticuado más rápido. Para producción seria, repositorio oficial.
Paso 1: Limpiar instalaciones previas
Si tienes Docker viejo o docker.io instalado:
sudo apt-get remove docker docker-engine docker.io containerd runc
Esto elimina paquetes pero no borra imágenes ni datos de /var/lib/docker. Si quieres empezar desde cero, también:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Paso 2: Preparar el sistema
Actualizar índices y instalar dependencias para añadir el repo:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
Paso 3: Añadir la GPG key oficial de Docker
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
Esto coloca la GPG key en /etc/apt/keyrings/, que es la ubicación moderna recomendada por Debian/Ubuntu (en vez de apt-key add que está deprecated).
Paso 4: Añadir el repositorio
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
Esto detecta automáticamente arquitectura (amd64 o arm64) y nombre de la release (bookworm para Debian 12).
Paso 5: Instalar Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
Cinco paquetes:
- docker-ce: el daemon (Docker Community Edition).
- docker-ce-cli: el comando
docker. - containerd.io: el runtime de bajo nivel.
- docker-buildx-plugin: build avanzado (multi-arch).
- docker-compose-plugin: el
docker composev2 (con espacio).
Tras la instalación, el servicio se inicia automáticamente.
Paso 6: Verificar que funciona
sudo docker --version
sudo docker compose version
sudo docker run hello-world
hello-world descarga una imagen mínima, la ejecuta, e imprime un mensaje confirmando que la instalación es funcional.
Paso 7: Permitir uso sin sudo
Por seguridad, Docker requiere sudo por defecto. Para usar docker como usuario normal:
sudo usermod -aG docker $USER
newgrp docker
newgrp actualiza la sesión actual. Para sesiones nuevas, basta cerrar y reabrir terminal o sesión SSH.
⚠ Implicación de seguridad: añadir un usuario al grupo docker equivale prácticamente a darle root. Quien puede hacer docker run puede montar / y modificar lo que quiera. En servidores compartidos o producción seria, considera Docker rootless en su lugar.
Paso 8: Habilitar arranque automático
Si no estaba ya:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Ahora Docker se inicia al arrancar la máquina.
Configuración recomendada (opcional)
Editar /etc/docker/daemon.json (créalo si no existe) para configurar log rotation y otras buenas prácticas:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"live-restore": true
}
- log-driver y log-opts: limitan tamaño de logs (sin esto, un container locuaz puede llenar disco).
- live-restore: contenedores siguen corriendo si reinicias
dockerd(útil en upgrades).
Aplicar con:
sudo systemctl reload docker
Problemas comunes
permission denied al ejecutar docker
Significa que el grupo docker no se aplicó a tu sesión. Ejecuta newgrp docker o cierra y reabre sesión.
Cannot connect to the Docker daemon
Verifica que el servicio está corriendo:
sudo systemctl status docker
Si falla al arrancar, revisa logs:
sudo journalctl -u docker -n 100 --no-pager
Pull lento o errors de DNS
Configura un mirror local de Docker Hub o usa un registry caché si tu conexión a Internet es limitada. Variable registry-mirrors en daemon.json.
Falta de espacio
Docker acumula imágenes y layers. Limpia periódicamente:
docker system prune -a --volumes
(Cuidado: esto borra todo lo no usado, incluyendo volúmenes anónimos.)
Próximos pasos
Con Docker instalado puedes:
- Probar Docker Compose para definir stacks de varios servicios.
- Considerar Docker Swarm si necesitas orquestación ligera.
- Configurar logs y métricas a Prometheus/Loki.
- Usar Watchtower para auto-update de contenedores en monitor mode.
Conclusión
Instalar Docker en Debian 12 desde el repo oficial es proceso predecible y bien documentado. Los pasos esenciales son: limpiar instalaciones previas, añadir GPG key y repo oficial, instalar paquetes, configurar grupo docker, verificar funcionamiento. Con los detalles de log rotation y live-restore aplicados desde el inicio, tienes una base sólida para producción ligera o desarrollo.
Síguenos en jacar.es para más tutoriales sobre Linux, Docker y administración de servidores.