Curso
Instalar Docker en Debian no debería requerir adivinar qué método no dañará tu sistema.
La mayoría de las guías te ofrecen múltiples opciones de instalación sin explicar cuándo utilizar cada una de ellas. Terminas con paquetes obsoletos del repositorio de Debian o, lo que es peor, con errores de permiso que te impiden acceder a tus propios contenedores. ¿El resultado? Pasas horas solucionando problemas en lugar de implementar aplicaciones.
El ciclo de lanzamiento predecible y la estabilidad sólida como una roca de Debian lo hacen perfecto para implementaciones de Docker en producción. Obtienes un rendimiento constante de los contenedores sin actualizaciones inesperadas del sistema que alteren tu configuración. En teoría, no deberías tener problemas después de la parte más complicada: la instalación.
En este tutorial, te guiaré a través de cuatro métodos de instalación, medidas esenciales de seguridad, configuración del almacenamiento y pasos para solucionar problemas, con el fin de que Docker funcione de forma fiable en Debian.
¿Eres completamente nuevo en Docker? Empieza con los conceptos básicos de Docker antes de seguir con los pasos de instalación.
Requisitos previos del sistema
Docker funciona en la mayoría de los sistemas Debian modernos, pero primero tendrás que marcar algunas casillas. En esta sección, te mostraré los requisitos exactos del sistema antes de comenzar la instalación.
Para las versiones actuales de Docker, se requiere Debian 10 (Buster) o superior. Las versiones anteriores, como Debian 9, no funcionarán con las compilaciones recientes de Docker Engine. Tu versión del kernel debe ser 3.10 o superior; la mayoría de las instalaciones de Debian de los últimos años cumplen este requisito automáticamente.
Necesitas acceso root o privilegios sudo para instalar los paquetes Docker y configurar el sistema. Docker también requiere estos paquetes básicos: apt-transport-https, ca-certificates, curl y gnupg. La mayoría de los sistemas Debian los tienen instalados, pero lo comprobarás más adelante.
Los requisitos de hardware son mínimos:
- 2 GB de RAM para gestionar cargas de trabajo básicas de contenedores, aunque 4 GB o más funcionan mejor para entornos de desarrollo.
- Se requiere un mínimo de 10 GB de espacio libre en disco para las imágenes de Docker y los datos de los contenedores. Las configuraciones de producción deben planificarse con mucho más margen.
Si estás ejecutando el entorno de escritorio GNOME, asegúrate de tener instalado el paquete gnome-terminal. Algunas herramientas de gestión de Docker lo esperan para sesiones interactivas de contenedores.
Elimina cualquier instalación antigua de Docker antes de comenzar. Los paquetes heredados como docker, docker.io o docker-engine pueden entrar en conflicto con el motor Docker actual. Ejecuta este comando para limpiar las versiones antiguas:
sudo apt remove docker docker-engine docker.io containerd runc
La configuración del firewall y de la red puede afectar a la conexión de red de los contenedores. Docker crea sus propias interfaces de red y reglas iptables. Si utilizas UFW o reglas de firewall personalizadas, es posible que tengas que ajustarlas después de la instalación para permitir el tráfico del contenedor.
Comprueba estos requisitos ahora y te ahorrarás tiempo en solucionar problemas más adelante.
Métodos de instalación
Tienes cuatro formas de instalar Docker en Debian, cada una con sus ventajas e inconvenientes. Te ayudaré a elegir el método que mejor se adapte a tu entorno y a tus requisitos de seguridad.
¿Buscas instrucciones para instalar Ubuntu? Tenemos una guía completa paso a paso para instalar Docker en Ubuntu.
Método 1: Repositorio oficial de Docker (recomendado)
Este método te permite obtener la última versión de Docker con actualizaciones de seguridad periódicas.
El repositorio oficial de Docker siempre cuenta con las últimas versiones estables, además de que obtienes actualizaciones automáticas a través de tu gestor de paquetes. No te quedarás atascado con versiones obsoletas que carecen de importantes parches de seguridad o nuevas funciones.
Comienza por actualizar tu sistema e instalar los paquetes que necesita Docker:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
A continuación, añade la clave GPG oficial de Docker para verificar la autenticidad del paquete:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Configura el repositorio añadiéndolo a tu lista de fuentes:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Por último, instala Docker Engine, CLI y Compose:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Esto te proporciona todo lo que necesitas para implementaciones de Docker en producción.
Método 2: Repositorio predeterminado de Debian
Este método instala Docker con un solo comando, pero obtendrás una versión anterior.
El repositorio predeterminado de Debian facilita la instalación: solo tienes que ejecutar sudo apt install docker.io. Pero hay un inconveniente: a menudo obtendrás versiones de Docker que están meses o años por detrás de la versión actual.
sudo apt update
sudo apt install docker.io
Este método funciona bien para pruebas básicas o cuando necesitas una versión anterior específica por motivos de compatibilidad. Pero te perderás las actualizaciones de seguridad, las mejoras de rendimiento y las nuevas funciones que incluyen las últimas versiones de Docker.
Utiliza este método solo cuando el repositorio oficial no sea una opción.
Método 3: Instalación manual del paquete DEB
Te mostraré cómo descargar e instalar paquetes directamente cuando no puedas acceder a los repositorios.
Este método funciona para sistemas aislados, redes corporativas con acceso restringido a Internet o cuando necesitas instalar la misma versión de Docker en varias máquinas sin tener que descargarla repetidamente.
Descarga los paquetes DEB desde el sitio web de Docker:
-
Ir a
https://download.docker.com/linux/debian/dists/ -
Elige tu versión de Debian (bullseye, bookworm, etc.)
-
Navega hasta
pool/stable/amd64/ -
Descarga estos paquetes:
docker-ce_*.deb,docker-ce-cli_*.debycontainerd.io_*.deb
Instala los paquetes en el orden siguiente:
sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb
Si aparece un error de dependencia, ejecuta « sudo apt-get install -f » para solucionarlo.
Este método requiere más trabajo manual para las actualizaciones, pero te ofrece un control total sobre la versión que se instala.
Método 4: Scripts de conveniencia
El último método que voy a explicar te ofrece una instalación rápida para entornos de prueba, pero primero debes auditar el script.
Docker proporciona scripts de instalación que detectan tu sistema e instalan Docker automáticamente. Son útiles para crear rápidamente entornos de prueba o cuando se configura Docker en varios sistemas.
curl -fsSL https://get.docker.com -o get-docker.sh
Revisa siempre el script antes de ejecutarlo:
cat get-docker.sh
Busca cualquier cosa sospechosa o inesperada. El script modificará la configuración de tu sistema, por lo que es importante que sepas lo que está haciendo.
Ejecuta el script después de revisarlo:
sudo sh get-docker.sh
No utilices scripts de conveniencia en producción. Están diseñados para una configuración rápida, no para implementaciones seguras y reproducibles. Utiliza el método del repositorio oficial para los sistemas importantes.
Recomiendo elegir el método del repositorio oficial, a menos que tengas restricciones específicas que requieran un enfoque diferente.
Verificación de la instalación
La instalación es solo el primer paso: debes confirmar que Docker funciona correctamente antes de implementar nada. Estas pruebas rápidas te dirán si tu configuración de Docker está lista para cargas de trabajo reales.
Comprueba tu versión de Docker para confirmar que la instalación se ha completado:
docker --version
Deberías ver un resultado similar a Docker version xx.x.x, build x. Si aparece el error «comando no encontrado», Docker no se ha instalado correctamente o no está en tu PATH.
Obtener información detallada sobre la compilación para ver qué componentes se están ejecutando:
docker version
Esto muestra versiones separadas para el cliente y el servidor, además de detalles sobre la arquitectura. La sección del servidor confirma que el demonio Docker se está ejecutando y es accesible.
Ejecuta un contenedor de prueba para validar que todo funciona de principio a fin:
docker run hello-world
Docker descargará la imagen hello-world y la ejecutará. Si todo funciona correctamente, aparecerá un mensaje explicando cómo funcionan los contenedores Docker. Esta prueba confirma que Docker puede extraer imágenes, crear contenedores y ejecutar comandos.
Puedes verificar que Docker Compose está instalado y si funciona:
docker compose version
Deberías ver un resultado similar a Docker Compose version vX.xx.x. Ten en cuenta que las instalaciones más recientes de Docker utilizan docker compose (con un espacio) en lugar del antiguo comando docker-compose.
Si todos estos comandos funcionan sin errores, la instalación de Docker está lista para su uso en producción.
¿Estás listo para ejecutar tu primer contenedor real? Aprende a ejecutar imágenes de Docker paso a paso.
Configuración posterior a la instalación
Docker funciona nada más instalarlo, pero es recomendable configurar algunas cosas para el uso diario. En esta sección, trataré la gestión de servicios y los permisos de usuario que hacen que Docker sea más cómodo y seguro.
Gestión de servicios
Puedes controlar cuándo se ejecuta Docker con estos comandos de systemd:
sudo systemctl start docker # Start Docker
sudo systemctl stop docker # Stop Docker
sudo systemctl restart docker # Restart Docker service
Para habilitar Docker para que se inicie automáticamente cuando se inicie el sistema, ejecuta lo siguiente:
sudo systemctl enable docker
Esto garantiza que Docker se ejecute cada vez que reinicies el servidor, que es lo que se desea en los sistemas de producción.
Si necesitas comprobar si Docker se está ejecutando y ver su estado actual, ejecuta este comando:
sudo systemctl status docker
Verás si el servicio está activo, cuánto tiempo lleva en funcionamiento y cualquier mensaje de registro reciente. Si Docker no funciona, este comando suele mostrarte el motivo.
Para solucionar problemas de servicio, revisa los registros:
sudo journalctl -u docker.service
Esto muestra los registros detallados del demonio Docker que ayudan a diagnosticar problemas de inicio, errores de permisos o problemas de configuración.
Acceso de usuarios sin privilegios de root
Si necesitas añadir tu usuario al grupo docker para ejecutar comandos de Docker sin sudo:
sudo usermod -aG docker $USER
Esto añade tu usuario actual al grupo docker, lo que te da permiso para comunicarte con el demonio Docker.
A continuación, deberás cerrar sesión y volver a iniciarla para que el cambio de grupo surta efecto:
logout
Como alternativa, reinicia la sesión de tu terminal. También puedes ejecutar newgrp docker para activar el grupo en la sesión actual sin cerrar sesión.
Por último, para comprobar el acceso sin privilegios de root, ejecuta este comando de Docker:
docker run hello-world
Si esto funciona sin sudo, ya está todo listo.
Pero aquí está la contrapartida en materia de seguridad: Los usuarios del grupo docker tienen acceso equivalente al de root en tu sistema. Pueden montar directorios del host, acceder a archivos confidenciales y, potencialmente, escapar de los contenedores para comprometer el host.
Añade solo usuarios de confianza al grupo docker y nunca lo hagas en sistemas compartidos en los que no controlas todos los usuarios.
Configura estos ajustes una vez y te resultará mucho más fácil trabajar con Docker a diario.
Configuración del controlador de almacenamiento
El controlador de almacenamiento de Docker gestiona cómo se almacenan las imágenes y los datos de los contenedores en tu sistema. La mayoría de los usuarios nunca necesitan cambiarlo, pero comprender tus opciones ayuda a optimizar el rendimiento para cargas de trabajo específicas.
Docker selecciona automáticamente el mejor controlador de almacenamiento para tu sistema durante la instalación. En Debian, suele ser overlay2, que ofrece un rendimiento y una estabilidad excelentes para la mayoría de los casos de uso.
Comprueba tu controlador de almacenamiento actual con este comando:
docker info | grep "Storage Driver"
El controlador overlay2 funciona bien porque:
- Gestiona rápidamente las operaciones de copia en escritura cuando los contenedores modifican archivos.
- Comparte capas entre imágenes para ahorrar espacio en disco
- Compatible con todas las funciones de Docker sin problemas de compatibilidad.
- Funciona de forma fiable en diferentes tipos de sistemas de archivos
Es posible que necesites un controlador de almacenamiento diferente si estás ejecutando cargas de trabajo especializadas o tienes requisitos específicos del sistema de archivos.
Por ejemplo, algunos sistemas de almacenamiento empresarial funcionan mejor con el controlador devicemapper, o es posible que necesites vfs para depurar problemas del sistema de archivos del contenedor.
Puedes cambiar el controlador de almacenamiento editando la configuración del demonio de Docker:
sudo nano /etc/docker/daemon.json
Aquí, añade o modifica la configuración del controlador de almacenamiento:
{
"storage-driver": "devicemapper"
}
Por último, recuerda reiniciar Docker para aplicar el cambio:
sudo systemctl restart docker
Ten en cuenta que al cambiar los controladores de almacenamiento, no podrás acceder a los contenedores e imágenes existentes. Haz primero una copia de seguridad de los datos importantes o exporta los contenedores que desees conservar.
Ahora puedes probar el nuevo controlador extrayendo una imagen y ejecutando un contenedor:
docker pull hello-world
docker run hello-world
En resumen, quédate con overlay2 a menos que tengas requisitos específicos que exijan un controlador diferente.
Refuerzo de la seguridad
Las instalaciones predeterminadas de Docker funcionan bien para el desarrollo, pero los entornos de producción necesitan capas de seguridad adicionales. Estas configuraciones protegen tu sistema host contra fugas de contenedores y ataques de agotamiento de recursos.
Integración de SELinux/AppArmor
Los controles de acceso obligatorios añaden una capa de seguridad que limita lo que pueden hacer los contenedores, incluso si se ven comprometidos. Sin estos controles, un contenedor que se ejecuta como root puede acceder potencialmente a recursos del host a los que no debería tener acceso.
Puedes habilitar AppArmor para Docker, que es el marco de seguridad predeterminado de Debian, ejecutando estos comandos:
sudo apt install apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor
Una vez que AppArmor esté en ejecución, carga el perfil de seguridad de Docker:
sudo apparmor_parser -r /etc/apparmor.d/docker
Ahora puedes ejecutar contenedores con la protección AppArmor habilitada:
docker run --security-opt apparmor=docker-default nginx
El perfil docker-default restringe las capacidades del contenedor, como montar sistemas de archivos, acceder a interfaces de red sin procesar y cargar módulos del kernel.
Para sistemas SELinux (si lo estás utilizando en lugar de AppArmor), primero habilita la gestión de contenedores:
sudo setsebool -P container_manage_cgroup on
A continuación, ejecuta contenedores con etiquetas SELinux:
docker run --security-opt label=type:container_t nginx
Estos controles bloquean muchas técnicas comunes de escape de contenedores y limitan el daño causado por contenedores comprometidos.
Configuración del demonio
Puedes (y debes) personalizar la configuración del demonio Docker para reducir la superficie de ataque y mejorar la postura de seguridad. Crea o edita el archivo /etc/docker/daemon.json:
{
"live-restore": true,
"userland-proxy": false,
"no-new-privileges": true,
"icc": false,
"disable-legacy-registry": true
}
A continuación se explica la función de cada ajuste:
-
live-restore: truemantiene los contenedores en funcionamiento si el demonio Docker se bloquea -
userland-proxy: falseutiliza iptables directamente en lugar del proxy de espacio de usuario para obtener un mejor rendimiento -
no-new-privileges: trueimpide que los contenedores obtengan nuevos privilegios -
icc: falsedesactiva la comunicación entre contenedores de forma predeterminadadisable-legacy-registry: truebloquea el acceso a protocolos de registro antiguos e inseguros
Después de realizar estos cambios, reinicia Docker para aplicarlos:
sudo systemctl restart docker
También debes ejecutar los contenedores como usuarios no root siempre que sea posible:
docker run --user 1000:1000 nginx
Esto limita lo que los contenedores comprometidos pueden hacer en tu sistema.
Límites de recursos con grupos de control (cgroups)
Los contenedores sin límites de recursos pueden consumir toda la CPU, la memoria y la E/S disponibles y, en última instancia, bloquear todo el sistema host. Los grupos de control (cgroups) evitan esto imponiendo límites estrictos al uso de recursos.
Comienza con límites de memoria para evitar que los contenedores utilicen una cantidad excesiva de RAM:
docker run --memory=512m nginx
También puedes limitar el uso de la CPU para evitar que un contenedor acapare toda la potencia de procesamiento:
docker run --cpus=1.5 nginx
Para sistemas con un alto nivel de E/S de disco, controla las velocidades de lectura/escritura:
docker run --device-read-bps /dev/sda:1mb nginx
También puedes combinar varios límites para obtener un control total de los recursos:
docker run \
--memory=1g \
--cpus=2 \
--pids-limit=100 \
nginx
Para establecer límites coherentes en todos los contenedores, configura los valores predeterminados en tu archivo daemon.json:
{
"default-ulimits": {
"nofile": {
"Hard": 64000,
"Name": "nofile",
"Soft": 64000
}
}
}
Estos límites evitan los ataques de agotamiento de recursos y garantizan un uso compartido justo de los recursos entre los contenedores.
Configura estas medidas de seguridad una vez y tu entorno Docker será mucho más difícil de comprometer.
¿Necesitas dominar los comandos de Docker para la gestión diaria? Estos 18 comandos esenciales de Docker te harán más productivo.
Solución de problemas comunes
Incluso con una instalación correcta, Docker puede encontrar obstáculos que impidan que los contenedores se ejecuten correctamente. Estos son los problemas más comunes y cómo solucionarlos rápidamente.
Errores de permiso
La mayoría de los problemas de permisos de Docker se deben a que tu usuario no tiene el acceso adecuado al archivo de socket de Docker. Cuando veas « Got permission denied while trying to connect to the Docker daemon socket », significa que aún no estás en el grupo docker.
Esto ocurre porque Docker se ejecuta como root, pero crea un socket al que pueden acceder los miembros del grupo docker. Únete al grupo:
sudo usermod -aG docker $USER
Debes cerrar sesión y volver a iniciarla para que el cambio surta efecto. Si no deseas cerrar sesión ahora, puedes activar el grupo en tu sesión actual:
newgrp docker
Los errores de permisos de archivos dentro de contenedores son diferentes, pero igual de comunes. Esto ocurre cuando el proceso del contenedor no puede leer o escribir archivos que has montado desde tu sistema host. Es posible que el contenedor se esté ejecutando con un ID de usuario diferente al propietario de tus archivos.
Comprueba qué usuario es el propietario de tus archivos:
ls -la /path/to/your/files
La mayoría de los contenedores Docker se ejecutan con el ID de usuario 1000 de forma predeterminada. Si tus archivos son propiedad de root o de otro usuario, cambia la propiedad:
sudo chown -R 1000:1000 /path/to/your/files
Si estás ejecutando SELinux (en lugar de AppArmor), es posible que veas diferentes denegaciones de permisos que aparecen en los registros de auditoría. Estos son más complejos porque SELinux controla qué procesos pueden acceder en función de contextos de seguridad, no solo de los ID de usuario.
Busca infracciones de acceso recientes:
sudo ausearch -m avc -ts recent
Corregir los contextos de SELinux haciendo clic en
sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volume
Fallos en el servicio
Cuando Docker no se inicia o se bloquea continuamente, es necesario comprender qué está fallando antes de poder solucionarlo. El estado del servicio systemd te ofrece una visión general rápida:
sudo systemctl status docker
Esto muestra si Docker se está ejecutando y muestra cualquier mensaje de error reciente. Pero para una resolución detallada de problemas, es recomendable que observes los registros en vivo mientras Docker intenta iniciarse:
sudo journalctl -u docker.service -f
Un error habitual al iniciar el sistema se produce cuando Docker no se ha cerrado correctamente. Aparecerá un error similar a «No se ha podido iniciar el demonio: se ha encontrado el archivo pid. Asegúrate de que Docker no se está ejecutando». Esto significa que hay un archivo de proceso sobrante que confunde el script de inicio.
Elimina el archivo obsoleto e intenta iniciar de nuevo:
sudo rm /var/run/docker.pid
sudo systemctl start docker
Los problemas de almacenamiento son otra causa frecuente de fallos del demonio. Docker almacena todos sus datos en /var/lib/docker, y si este directorio se queda sin espacio o se daña, Docker no puede iniciarse correctamente.
Comprueba cuánto espacio hay disponible:
df -h /var/lib/docker
Si te estás quedando sin espacio, limpia los contenedores e imágenes antiguos que no estés utilizando:
docker system prune -a
Los conflictos de red también pueden impedir que Docker se inicie. Esto ocurre cuando la red puente predeterminada de Docker (normalmente 172.17.0.0/16) entra en conflicto con la configuración de red existente. Verás errores sobre rangos de direcciones que no están disponibles.
Soluciona esto configurando una IP de puente personalizada que no entre en conflicto con tu red. Editar /etc/docker/daemon.json:
{
"bip": "192.168.1.1/24"
}
Después de realizar el cambio, reinicia Docker para utilizar la nueva configuración de red:
sudo systemctl restart docker
Problemas con el kernel obsoleto
Docker depende de las características del kernel de Linux para la contenedorización, la conexión en red y la seguridad. Si tu kernel es demasiado antiguo, tendrás problemas que no podrás solucionar sin actualizarlo.
Comprueba qué versión del kernel estás ejecutando con este comando:
uname -r
Docker necesita al menos el kernel 3.10 para las funciones básicas, pero para uso en producción es recomendable utilizar la versión 4.0 o superior. Cualquier versión anterior a la 3.10 simplemente no funcionará con las versiones modernas de Docker.
Actualizar el kernel en Debian es fácil, solo tienes que instalar el último paquete del kernel:
sudo apt update
sudo apt install linux-image-amd64
El nuevo kernel no estará activo hasta que reinicies el sistema:
sudo reboot
A veces, el kernel es lo suficientemente nuevo, pero algunos módulos del kernel no están cargados. Docker necesita módulos específicos para las funciones de red y contenedorización. Verás errores sobre interfaces de red no disponibles o contenedores que no se inician correctamente.
Carga los módulos esenciales manualmente:
sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_nat
Estos módulos deberían cargarse automáticamente, pero si no es así, hazlos permanentes añadiéndolos a la configuración del sistema:
echo "bridge" | sudo tee -a /etc/modules
echo "ip_tables" | sudo tee -a /etc/modules
echo "iptable_nat" | sudo tee -a /etc/modules
Incluso con un kernel reciente, es posible que encuentres errores de tiempo de ejecución del contenedor que indican «operación no compatible». Esto suele significar que tu kernel se compiló sin ciertas características que Docker espera. Desafortunadamente, no hay ninguna solución alternativa para las funciones del kernel que faltan: necesitas un kernel configurado correctamente.
La mayoría de los problemas de instalación de Docker se deben a tres causas: permisos de usuario, configuración del servicio o compatibilidad del kernel. Soluciona el problema subyacente en lugar de solucionar los síntomas, y tu entorno Docker será mucho más estable.
¿Trabajas con bases de datos en contenedores? La configuración de PostgreSQL en Docker es más fácil de lo que crees.
Desinstalar Docker
A veces es necesario eliminar completamente Docker del sistema, ya sea porque vas a cambiar a un entorno de ejecución de contenedores diferente o porque quieres empezar desde cero tras haber tenido problemas de configuración.
Este proceso implica mucho más que simplemente eliminar paquetes: también querrás limpiar los datos y los cambios del sistema.
Empieza por eliminar todos los paquetes de Docker de tu sistema. El comando exacto depende de cómo hayas instalado Docker originalmente.
Si lo instalaste desde el repositorio oficial de Docker:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
Si lo instalaste desde el repositorio predeterminado de Debian:
sudo apt purge docker.io docker-compose
Esto elimina los paquetes, pero deja los archivos de configuración y las dependencias que otros paquetes podrían seguir necesitando. Para eliminarlos también:
sudo apt autoremove --purge
A continuación, elimina el directorio de datos de Docker si deseas eliminar todas las imágenes, contenedores y volúmenes. Este paso es opcional, pero recomendable para una limpieza completa.
Docker almacena todo en /var/lib/docker de forma predeterminada. Al eliminar este directorio, se borrarán de forma permanente todos tus contenedores, imágenes, redes y volúmenes:
sudo rm -rf /var/lib/docker
También debes eliminar el directorio de configuración de Docker:
sudo rm -rf /etc/docker
Continúa limpiando los grupos y usuarios del sistema que Docker creó durante la instalación. Docker añade un grupo « docker » a tu sistema y puede haber modificado los permisos de usuario.
Elimina el grupo docker:
sudo groupdel docker
Si has añadido usuarios al grupo docker, su pertenencia al grupo se eliminará automáticamente cuando elimines el grupo. Pero también puedes eliminar manualmente usuarios específicos del grupo antes de borrarlo:
sudo gpasswd -d username docker
A continuación, elimina los archivos de servicio systemd de Docker y los archivos de socket:
sudo rm -f /lib/systemd/system/docker.service
sudo rm -f /lib/systemd/system/docker.socket
sudo systemctl daemon-reload
Por último, comprueba si quedan procesos de Docker que puedan seguir ejecutándose:
ps aux | grep docker
Si encuentras alguno, deténlo manualmente:
sudo pkill -f docker
Después de estos pasos, Docker debería haberse eliminado por completo de tu sistema sin dejar archivos ni configuraciones.
¿Estás considerando alternativas a Docker? Explora otras plataformas de contenedorización antes de realizar el cambio.
Conclusión y mejores prácticas
Ahora ya tienes Docker ejecutándose en Debian, pero la instalación es solo el principio. La forma en que configures y mantengas tu entorno Docker determinará si tendrás una experiencia de producción fluida o si pasarás noches resolviendo problemas con los contenedores.
¿Estás creando contenedores multiplataforma para diferentes arquitecturas? Docker Buildx simplifica las compilaciones multiplataforma.
Elige el método de instalación en función de tus limitaciones. El repositorio oficial de Docker funciona mejor para la mayoría de los entornos de producción, ya que ofrece las últimas funciones y parches de seguridad. Sin embargo, las redes aisladas o los requisitos de coherencia entre versiones pueden exigir la instalación manual de DEB.
Protege tu entorno Docker de inmediato. Habilita AppArmor o SELinux para controles de acceso obligatorios, configura ajustes restrictivos para los demonios y utiliza cgroups para limitar los recursos de los contenedores. Mantén Docker actualizado con las actualizaciones de seguridad automáticas, pero pruébalas primero en el entorno de pruebas.
Utiliza Docker Compose para aplicaciones con varios contenedores. En lugar de gestionar complejos comandos de « docker run », define tu pila de aplicaciones en YAML.
Supervisa el uso del disco y límpialo con regularidad. Ejecuta docker system prune para eliminar las imágenes que no se utilizan y configurar la rotación de registros para evitar que los contenedores llenen el disco.
Si necesitas información más detallada, la documentación oficial cubre temas avanzadosque nose tratan en esta guía. Consulta la documentación de Docker para obtener información detallada sobre redes, controladoresde almacenamiento y orquestación. La documentación del paquete Debian Docker explica las configuraciones específicas del paquete y los problemas conocidos.
Docker en Debian te ofrece una plataforma estable y potente para aplicaciones en contenedores, pero solo si la configuras cuidadosamente y la mantienes de forma coherente.
¿Quieres saber más sobre Docker, la contenedorización y su aplicación en la ciencia de datos y el machine learning? Estos cursos de DataCamp son tu mejor opción:
Preguntas frecuentes
¿Cuál es la mejor manera de instalar Docker en Debian para uso en producción?
El método oficial del repositorio de Docker es la mejor opción para entornos de producción, ya que proporciona las últimas versiones estables con actualizaciones de seguridad periódicas. Este método garantiza que obtengas todas las funciones más recientes y los parches críticos que podrían no estar disponibles en los repositorios predeterminados de Debian. También te beneficiarás de las actualizaciones automáticas a través de tu gestor de paquetes, que mantiene tu instalación de Docker segura sin necesidad de intervención manual.
¿Debo preocuparme por la seguridad al ejecutar Docker en Debian?
Sí, la seguridad de Docker requiere una configuración cuidadosa más allá de la instalación básica. Los contenedores comparten el kernel del host, por lo que un contenedor comprometido podría acceder a los recursos del host si no está correctamente aislado. Debes habilitar AppArmor o SELinux para los controles de acceso obligatorios, configurar los límites de recursos con cgroups y ejecutar los contenedores como usuarios no root siempre que sea posible. Además, mantén Docker actualizado y evita añadir usuarios al grupo docker a menos que sea absolutamente necesario, ya que esto concede acceso al sistema equivalente al de root.
¿Puedo ejecutar Docker en versiones anteriores de Debian?
Docker requiere Debian 10 (Buster) o una versión posterior para funcionar con las versiones actuales de Docker Engine. Las versiones anteriores, como Debian 9, carecen de las características del kernel y las dependencias de paquetes necesarias para el Docker moderno. Si estás utilizando una versión antigua de Debian, primero tendrás que actualizar tu sistema, ya que no existe ninguna solución fiable para la funcionalidad del kernel que falta y de la que depende Docker para la contenedorización y la conexión en red.
¿Por qué Docker no se inicia después de la instalación y cómo puedo solucionar los problemas del demonio?
Los fallos del demonio Docker suelen deberse a tres causas principales: problemas de almacenamiento, conflictos de red o archivos de procesos restantes de instalaciones anteriores. Comprueba si /var/lib/docker tiene suficiente espacio en disco utilizando df -h /var/lib/docker y, si es necesario, limpia con docker system prune -a. En caso de conflictos de red, es posible que la IP del puente predeterminada de Docker (172.17.0.0/16) entre en conflicto con la configuración de red existente, lo que te obligará a configurar una IP de puente personalizada en /etc/docker/daemon.json. Si ves el error «pid file found» (archivo pid encontrado), elimina el archivo obsoleto con « sudo rm /var/run/docker.pid » y reinicia el servicio.
¿Cómo puedo eliminar correctamente Docker y todos sus datos de mi sistema Debian?
Para eliminar Docker por completo, no basta con desinstalar los paquetes, sino que también es necesario limpiar los directorios de datos, los grupos del sistema y los archivos de servicio. Empieza por purgar los paquetes de Docker con sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin, luego elimina el directorio de datos con sudo rm -rf /var/lib/docker (esto elimina permanentemente todos los contenedores e imágenes). Elimina el grupo docker con sudo groupdel docker, elimina los archivos de servicio de systemd y comprueba si queda algún proceso de Docker con ps aux | grep docker. Esto garantiza que todo quede limpio si necesitas reinstalar o cambiar a un tiempo de ejecución de contenedores diferente.

