Instala Docker en las distribuciones Linux más populares: guía de instalación de Docker en Linux
Nivel: Intermedio
Tiempo estimado: ~15 minutos
Objetivo: Configurar un entorno seguro y descentralizado mediante la instalación de Docker para autoalojar servicios personales como Nextcloud, Bitwarden y Matrix.
Introducción
Alojar sus propios servicios en la «nube» garantiza la privacidad y la plena propiedad de los datos. Para desplegar servicios como Nextcloud (almacenamiento de archivos), Bitwarden (gestión de contraseñas) o Matrix (comunicación segura) sin lidiar con complejas dependencias a nivel de host, se necesitan entornos aislados. En este tutorial veremos cómo instalar Docker en Linux para construir una base de autoalojamiento robusta y reproducible. Tanto si necesita una configuración completa de Docker en Linux para un único servidor como para una flota, todos los pasos siguientes se aplican a Ubuntu, Debian y distribuciones compatibles con RHEL. Al final de esta guía de instalación de Docker en Linux dispondrá de un entorno listo para producción, configurado con valores de seguridad predeterminados basados en buenas prácticas.
Terminología
Antes de continuar, asegúrese de comprender estos conceptos básicos:
- Docker: una plataforma para desarrollar, distribuir y ejecutar aplicaciones en entornos aislados.
- Docker Engine: la tecnología cliente-servidor principal que crea y ejecuta contenedores.
- Contenedor (Container): un componente ejecutable estandarizado que combina el código fuente de una aplicación con las bibliotecas del sistema operativo y las dependencias necesarias para ejecutarla.
- Imagen (Image): una plantilla de solo lectura con instrucciones para crear un contenedor.
- Demonio de Docker (Docker daemon): el servicio en segundo plano que se ejecuta en el host y gestiona la construcción, ejecución y distribución de contenedores.
- Docker CLI: la interfaz de línea de comandos que se utiliza para interactuar con el demonio.
- Docker Hub: un registro público mantenido por Docker para encontrar y compartir imágenes de contenedores.
- Registro (Registry): un sistema de almacenamiento y distribución de imágenes de contenedores.
- Instalación: el proceso de dejar los programas listos para su ejecución.
- Gestor de paquetes: una herramienta de software que automatiza la instalación, actualización, configuración y eliminación de programas.
- Repositorio: una ubicación central donde se almacenan y mantienen los paquetes de software.
- Repositorio oficial de Docker: la fuente de confianza mantenida por Docker para obtener paquetes de software estables.
- Paquete: un archivo comprimido que contiene todos los ficheros que acompañan a una aplicación concreta.
- Dependencia: un programa o biblioteca que otro programa necesita para funcionar correctamente.
- Versión estable (Stable release): una versión de software que ha sido probada a fondo y se considera fiable para su uso en producción.
- Versión: un estado único del software que refleja sus características y correcciones específicas.
Requisitos previos
Antes de empezar, asegúrese de que se cumplen las siguientes condiciones:
- Sistema operativo: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 o compatible con RHEL (AlmaLinux, Rocky, RHEL) 8/9/10
- Acceso: acceso sudo o root al servidor
- Conocimientos necesarios: manejo seguro de la línea de comandos de Linux
Paso 1: Configurar el repositorio de Docker
Para obtener la versión más reciente, segura y estable, utilice siempre el repositorio oficial de Docker en lugar de los repositorios predeterminados del sistema operativo.
Para Ubuntu:
En primer lugar, actualice el índice del gestor de paquetes de Linux e instale los paquetes necesarios para que apt pueda usar un repositorio a través de HTTPS:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Añada la clave GPG oficial de Docker:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Configure el repositorio estable:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Para Debian:
Los pasos para instalar Docker en Debian son equivalentes a los de Ubuntu, pero apuntan a la URL del repositorio específica de Debian. En primer lugar, actualice el índice del gestor de paquetes de Linux e instale los paquetes necesarios:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release
Añada la clave GPG oficial de Docker:
sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Configure el repositorio estable:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Para sistemas compatibles con RHEL (AlmaLinux, Rocky, RHEL):
Instale el paquete yum-utils y configure el repositorio estable:
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Docker publica paquetes para todas las distribuciones compatibles con RHEL (incluidas AlmaLinux y Rocky Linux) bajo la ruta de repositorio centos. El uso de esta URL es lo previsto y cuenta con soporte completo.
Resultado: El repositorio de Docker queda añadido al sistema, lo que permite al gestor de paquetes obtener los paquetes de Docker más recientes.
Paso 2: Instalar Docker en Ubuntu y Debian
Con el repositorio de Docker configurado, proceda a instalar Docker Engine en Ubuntu (o Debian: los comandos son idénticos). Este paso se aplica a ambas distribuciones.
En primer lugar, elimine los paquetes en conflicto que proporcionan los repositorios del sistema operativo:
sudo apt remove docker.io podman-docker containerd runc
Vuelva a actualizar el índice de paquetes de apt y utilice el gestor de paquetes de Linux para instalar los componentes necesarios:
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Resultado: El comando se ejecuta y obtiene los paquetes y las dependencias necesarias del repositorio de Docker. El gestor de paquetes debería completar la instalación de Docker Engine sin errores.
docker-ce se refiere a Docker Community Edition, la versión gratuita, ideal para quienes autoalojan sus servicios.
Paso 3: Instalar Docker en sistemas compatibles con RHEL (AlmaLinux, Rocky, RHEL)
En los sistemas basados en RHEL, utilice yum para instalar Docker Engine.
En primer lugar, elimine los paquetes en conflicto que proporcionan los repositorios del sistema operativo:
sudo yum remove docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine \ podman runc
Ejecute el siguiente comando:
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin
Resultado: El gestor de paquetes instala los paquetes necesarios. Se le pedirá que acepte la clave GPG (salvo que utilice la opción -y); confírmela. Al terminar, verá un mensaje de éxito.
Paso 4: Verificación de la instalación de Docker Engine
Tras la instalación, el comportamiento del demonio de Docker varía según la distribución. En Ubuntu y Debian, docker.service se inicia automáticamente al instalarse. En las distribuciones de la familia RHEL, no.
Solo familia RHEL: si el proceso de instalación actualizó el kernel (por ejemplo, mediante una dependencia kernel-core), reinicie el servidor antes de iniciar el servicio de Docker:
sudo reboot
Omitir este paso puede hacer que systemctl start docker falle con errores de br_netfilter / addrtype, porque el kernel en ejecución ya no coincide con los módulos instalados.
Una vez que el servidor esté funcionando con el kernel actual, inicie y habilite el servicio. Los siguientes comandos son idempotentes y es seguro ejecutarlos en todos los sistemas:
sudo systemctl start docker sudo systemctl enable docker
Resultado: El demonio de Docker se inicia y el sistema crea un enlace simbólico para que arranque automáticamente en cada reinicio.
Verifique que la instalación de Docker Engine se ha realizado correctamente ejecutando la imagen hello-world:
sudo docker run hello-world
Resultado: La CLI de Docker contacta con el demonio de Docker, descarga la imagen hello-world desde Docker Hub y ejecuta un contenedor. Debería ver en el terminal un mensaje que dice «Hello from Docker!».
Paso 5: Pasos posteriores a la instalación de Docker
De forma predeterminada, ejecutar comandos de Docker requiere sudo. Para ejecutarlos como usuario sin privilegios de root, debe añadir su usuario al grupo docker. Estos son los pasos posteriores a la instalación de Docker imprescindibles para gestionar cómodamente su infraestructura autoalojada.
Cree el grupo docker (si aún no existe):
getent group docker || sudo groupadd docker
Añada su usuario al grupo docker:
sudo usermod -aG docker $USER
Resultado: Su usuario queda añadido al grupo. Para que los cambios surtan efecto, debe cerrar sesión y volver a iniciarla, o activar la nueva pertenencia al grupo en la sesión actual:
newgrp docker
newgrp docker crea un nuevo shell con la pertenencia a grupos actualizada. Cualquier comando docker que ejecute a continuación funcionará sin sudo, pero solo dentro de ese nuevo shell. Si abre otro terminal, seguirá siendo necesario cerrar sesión y volver a iniciarla.
la pertenencia al grupo docker concede privilegios equivalentes al acceso root en el host. En entornos de autoalojamiento que priorizan la seguridad, considere seriamente ejecutar Docker en modo rootless (consulte el Paso 6).
Después de ejecutar newgrp docker (o de cerrar sesión y volver a iniciarla), compruebe la configuración ejecutando un comando sin sudo:
docker run hello-world
Resultado: Debería volver a ver el mensaje «Hello from Docker!», lo que confirma que los pasos posteriores a la instalación de Docker se han realizado correctamente.
Alternativa: instalación rápida mediante el script de conveniencia
Para entornos de prueba o desarrollo, Docker ofrece un script de conveniencia.
Este método no se recomienda para producción. Se ejecuta sin fijar versiones, realiza una actualización incondicional si Docker ya está instalado e instala todas las dependencias sin verificación.
Se recomienda descargar el script e inspeccionarlo antes de ejecutarlo:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
Paso 6 (opcional): Ejecutar Docker en modo rootless
En entornos de autoalojamiento, ejecutar Docker en modo rootless mejora la seguridad, ya que el demonio de Docker y los contenedores se ejecutan como un usuario sin privilegios de root.
6.1 Requisitos previos
En primer lugar, detenga y deshabilite el servicio y el socket de Docker de todo el sistema, y elimine el archivo del socket:
sudo systemctl stop docker.service docker.socket sudo systemctl disable docker.service docker.socket sudo rm -f /var/run/docker.sock
Compruebe que su usuario tiene subuid y subgid configurados (normalmente se configuran automáticamente):
cat /etc/subuid cat /etc/subgid
Habilite el «lingering» para su usuario, de modo que el demonio pueda iniciarse al arrancar el sistema:
sudo loginctl enable-linger $USER
6.2 Instalar paquetes adicionales
Para Ubuntu/Debian:
sudo apt install docker-ce-rootless-extras uidmap dbus-user-session
Para AlmaLinux/RHEL (shadow-utils proporciona uidmap y suele venir preinstalado):
sudo yum install docker-ce-rootless-extras
6.3 Instalar el demonio rootless
Ejecute el script de instalación desde una sesión de inicio de sesión completa del usuario de destino (no desde sudo su ni desde un shell SSH sin inicio de sesión). Si se encuentra en un contexto sin inicio de sesión, exporte primero las variables necesarias:
export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus
A continuación, ejecute el script de instalación:
dockerd-rootless-setuptool.sh install
La primera ejecución del script de instalación inmediatamente después de habilitar el lingering puede ser inestable. Si el demonio no se inicia, simplemente vuelva a ejecutar el script de instalación.
6.4 Configurar las variables de entorno
Añada las siguientes variables al archivo de configuración de su shell (por ejemplo, ~/.bashrc):
export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Cargue el archivo (source) o reinicie el shell para aplicar los cambios.
6.5 Limitaciones del modo rootless
- No se pueden publicar puertos < 1024 (Docker ofrece soluciones alternativas como
setcap, el reenvío de puertos deslirp4netnso el enrutamiento). - No admite
--net=host. - No se admiten el modo Swarm ni las redes overlay.
- No se admite AppArmor.
- La opción
--privilegedno concede acceso root a nivel de host. - Los datos se almacenan en
~/.local/share/docker(tenga esto en cuenta para copias de seguridad y cuotas). - Requiere cgroup v2.
- Utiliza el controlador de almacenamiento
overlayfsen lugar deoverlay2.
Reversión (rollback)
Si necesita revertir la instalación de Docker en Linux, ya sea una configuración estándar o una rootless, siga los pasos siguientes en orden.
1. Reversión de rootless (omítala si no configuró el modo rootless):
Si configuró el modo rootless, revierta primero esos cambios, antes de eliminar los paquetes:
dockerd-rootless-setuptool.sh uninstall rm -rf ~/.local/share/docker sudo loginctl disable-linger $USER
Ejecutar la desinstalación de rootless después de haber purgado los paquetes fallará, porque el script de instalación forma parte del paquete docker-ce-rootless-extras. Desinstale siempre el modo rootless mientras los paquetes sigan presentes.
2. Eliminar los paquetes:
Debian/Ubuntu:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg
AlmaLinux/Rocky/RHEL:
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/yum.repos.d/docker-ce.repo
3. Eliminar el grupo:
sudo groupdel docker || true
Eliminar los paquetes no elimina automáticamente las imágenes, los contenedores, los volúmenes ni los archivos de configuración personalizados. Los comandos rm -rf borran de forma permanente estos directorios de datos.
Conclusión
Su instalación de Docker en Linux está completa y verificada. La base ya está configurada de forma segura. Puede proceder a desplegar contenedores para sus herramientas autoalojadas, manteniendo el control total sobre sus archivos de Nextcloud, sus cajas fuertes de Bitwarden y sus comunicaciones de Matrix.
Versión del documento: 1.0
Última actualización: mayo de 2026
Responsable: Equipo de documentación técnica