Como instalar Docker en Debian 12 paso a paso

Pantalla de terminal con comandos de instalación en Linux

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 compose v2 (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.

Entradas relacionadas