Instalar Docker en Ubuntu: APT, Snap, Rootless — Guía completa 2026
Seleccione la ruta de instalación de Docker adecuada en Ubuntu.
La instalación de Docker en Ubuntu debería ser sencilla, pero en la práctica, varias opciones con forma de Docker compiten por el mismo nombre de comando, cada una con diferente empaquetado, comportamiento de actualización e implicaciones de seguridad.
Esta guía compara cada ruta de instalación principal para que puedas elegir la que mejor se adapte a tu máquina.
Las opciones que encontrarás incluyen:
docker.iode los repositorios de Ubuntudocker-cedel repositorio APT oficial de Docker- Docker desde Snap
- Docker Desktop
- paquetes
.debdescargados manualmente - el script de conveniencia de Docker
- Docker sin privilegios de root (rootless)

Aunque todas proporcionan herramientas de contenedores, no son paquetes intercambiables. La mejor elección depende de si la máquina es una estación de trabajo de desarrollo, un ejecutor de CI, un servidor pequeño, un equipo de autoalojamiento o un host de producción. Mi recomendación predeterminada es tranquila pero firme: para la mayoría de los usuarios técnicos en máquinas Ubuntu normales, instala el Motor de Docker desde el repositorio APT oficial de Docker. Utiliza docker.io de Ubuntu solo cuando la integración con la distribución sea más importante que el empaquetado directo de Docker. Evita el paquete Snap a menos que desees específicamente el comportamiento de Snap y comprendas sus limitaciones. Vale la pena conocer Docker sin privilegios de root, pero no es automáticamente la mejor opción predeterminada para cada máquina.
Esta guía explica los compromisos, cubre la seguridad posterior a la instalación y te proporciona rutas de instalación limpias para cada método. Una vez que el Motor de Docker esté en ejecución, la Hoja de trucos de Docker es tu referencia de comandos diaria, y la Hoja de trucos de Docker Compose cubre configuraciones de múltiples contenedores. Ambas se encuentran junto a las guías de Git, VS Code y CI/CD en Herramientas para Desarrolladores: La Guía Completa para Flujos de Trabajo Modernos de Desarrollo.
Recomendación Rápida
La tabla a continuación resume qué ruta de instalación se adapta a los escenarios comunes.
| Caso de uso | Instalación recomendada |
|---|---|
| Estación de trabajo de desarrollo | Repositorio APT oficial de Docker |
| Ejecutor de CI | Repositorio APT oficial de Docker, versión fijada si es necesario |
| Servidor autoalojado pequeño | Repositorio APT oficial de Docker |
| Servidor de producción | Repositorio APT oficial de Docker, actualizaciones controladas |
| Sistema conservador solo Ubuntu | Paquete docker.io de Ubuntu |
| Experimento rápido de escritorio | Docker Desktop o repositorio APT oficial |
| Configuración de Ubuntu gestionada por Snap | Snap de Docker, con precaución |
| Requerimiento fuerte de daemon sin root | Docker sin privilegios de root (Rootless Docker) |
| Host aislado (air-gapped) | Paquetes .deb manuales o espejo interno |
Si no tienes una razón especial para elegir de otra manera, el repositorio APT oficial de Docker es la opción predeterminada.
Qué Se Instala
Una configuración normal del Motor de Docker incluye varias partes móviles:
- Daemon de Docker:
dockerd - CLI de Docker:
docker - Runtime de contenedores:
containerd - Runtime de bajo nivel:
runc - Plugin Buildx:
docker buildx - Plugin Compose:
docker compose
Docker Compose moderno generalmente se instala como un plugin del CLI de Docker. Eso significa que el comando es:
docker compose version
No:
docker-compose version
El antiguo comando docker-compose aún existe en guías y sistemas más antiguos, pero las nuevas configuraciones de Ubuntu generalmente deberían usar el plugin Compose.
Opción 1: Instalar Docker desde el Repositorio APT Oficial de Docker
Esta es la mejor opción predeterminada para la mayoría de los desarrolladores y usuarios de DevOps. Obtienes el empaquetado directo de Docker, las versiones actuales del Motor de Docker, Buildx, el plugin Compose y una ruta de actualización APT normal.
Eliminar Paquetes Conflictivos Primero
Antes de instalar Docker CE, elimina los paquetes que puedan entrar en conflicto con los paquetes oficiales de Docker.
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
Está bien si APT dice que algunos de estos paquetes no están instalados.
Este comando no elimina imágenes, contenedores, volúmenes o redes de Docker almacenados bajo /var/lib/docker. Si deseas un reinicio limpio, ese es un paso separado y debe hacerse deliberadamente.
Agregar el Repositorio APT Oficial de Docker
Instalar los prerrequisitos:
sudo apt update
sudo apt install ca-certificates curl
Crear el directorio del anillo de claves (keyring):
sudo install -m 0755 -d /etc/apt/keyrings
Descargar la clave del repositorio de Docker:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
Permitir que APT lea la clave:
sudo chmod a+r /etc/apt/keyrings/docker.asc
Agregar el repositorio de Docker usando el formato .sources deb822:
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt keyrings/docker.asc
EOF
Actualizar los metadatos de APT:
sudo apt update
Instalar el Motor de Docker, Buildx y Compose
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Verificar el servicio:
sudo systemctl status docker
Si no está en ejecución:
sudo systemctl start docker
Verificar la instalación:
sudo docker run hello-world
Verificar las versiones:
docker --version
docker buildx version
docker compose version
En este punto, Docker funciona, aunque todavía necesitas sudo para la mayoría de los comandos a menos que configures el acceso sin privilegios de root en la sección posterior a la instalación a continuación.
Opción 2: Instalar Docker desde los Repositorios de Ubuntu
Ubuntu proporciona el paquete docker.io, que puedes instalar con:
sudo apt update
sudo apt install docker.io docker-compose-v2
Iniciar y habilitar Docker:
sudo systemctl enable --now docker
Verificar:
sudo docker run hello-world
Cuándo Tiene Sentido docker.io de Ubuntu
El paquete de Ubuntu puede ser una buena elección cuando:
- Prefieres paquetes mantenidos por Ubuntu.
- Quieres una versión alineada con el proceso de lanzamiento de Ubuntu.
- Estás gestionando muchos hosts Ubuntu con repositorios estándar.
- No necesitas la versión más reciente de Docker upstream.
- Quieres menos fuentes APT de terceros.
Esta es una elección razonable. No está “mal”.
Cuándo docker.io de Ubuntu No Es Ideal
Usa el repositorio oficial de Docker en su lugar cuando:
- Quieres el Motor de Docker upstream actual.
- Sigues la documentación propia de Docker.
- Dependes del comportamiento actual de Buildx y Compose.
- Quieres nombres de paquetes de Docker CE.
- Estás depurando problemas contra la documentación upstream de Docker.
- Necesitas paridad predecible de versiones de Docker entre distribuciones.
Mi sesgo: para máquinas de desarrollo y hosts intensivos en contenedores, usa el repositorio APT oficial de Docker. Para máquinas gestionadas por Ubuntu de manera conservadora, docker.io es aceptable.
Opción 3: Instalar Docker con Snap
El snap de Docker se instala con un solo comando, pero la simplicidad no siempre significa un comportamiento predecible en un servidor o máquina de desarrollo.
sudo snap install docker
Los paquetes Snap tienen su propio modelo de empaquetado, comportamiento de actualización, suposiciones de aislamiento y estructura de sistema de archivos. Eso está bien para muchas aplicaciones de escritorio, pero el Motor de Docker ya es un runtime de contenedores a nivel de sistema, por lo que la capa adicional de Snap puede sorprender a la gente. Si gestionas otro software con Snap, la Hoja de Trucos del Gestor de Paquetes Snap explica los canales, aislamiento y comportamiento de actualización en más detalle.
Cuándo Tiene Sentido el Snap de Docker
El Snap de Docker puede ser razonable cuando:
- Gestionas intencionalmente el software con Snap.
- Estás usando Ubuntu Core o un entorno intensivo en Snap.
- Quieres actualizaciones automáticas estilo snap.
- Estás experimentando y no te importa coincidir con las instrucciones APT upstream de Docker.
Por Qué Generalmente Evito el Snap de Docker
Generalmente evito el snap de Docker para desarrollo y uso en servidor porque:
- La mayoría de la documentación de Docker asume la estructura estándar del Motor de Docker.
- Las rutas de solución de problemas pueden diferir de las instalaciones APT.
- La gestión de servicios puede sentirse menos transparente.
- Las actualizaciones automáticas de Snap pueden ser inconvenientes para el software de infraestructura.
- Algunos detalles de montajes vinculados, sockets e integración con el host pueden sorprenderte.
Si Docker es central en tu flujo de trabajo, instálalo como infraestructura en lugar de una aplicación de escritorio casual, incluso cuando una instalación Snap parezca tentadora a primera vista.
Opción 4: Instalar Docker desde Paquetes .deb Manuales
La instalación manual de .deb es útil cuando:
- La máquina no puede usar repositorios APT externos.
- Estás construyendo un proceso de instalación sin conexión.
- Espejas paquetes internamente.
- Necesitas un control de cambios estricto.
El compromiso es el mantenimiento, porque debes descargar e instalar nuevos paquetes manualmente cada vez que actualices.
Una instalación manual generalmente requiere estos paquetes:
containerd.iodocker-cedocker-ce-clidocker-buildx-plugindocker-compose-plugin
Instálalos con:
sudo dpkg -i ./containerd.io_*.deb \
./docker-ce_*.deb \
./docker-ce-cli_*.deb \
./docker-buildx-plugin_*.deb \
./docker-compose-plugin_*.deb
Luego corrige las dependencias faltantes si es necesario:
sudo apt --fix-broken install
Verificar:
sudo systemctl status docker
sudo docker run hello-world
Las instalaciones manuales de .deb no son mi primera elección, pero siguen siendo válidas para entornos controlados o aislados donde la aprobación explícita de paquetes es más importante que la conveniencia.
Opción 5: Usar el Script de Conveniencia de Docker
Docker proporciona un script de conveniencia:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Puedes previsualizar qué haría:
sudo sh get-docker.sh --dry-run
El script de conveniencia es útil para máquinas de prueba desechables, demostraciones, laboratorios y entornos temporales, pero no lo usaría como método de instalación principal para sistemas de producción. Un script que configura repositorios e instala paquetes de manera no interactiva es conveniente, pero la infraestructura de larga vida merece pasos explícitos y revisables; por lo tanto, para hosts de producción, usa el método del repositorio APT directamente.
Docker Desktop vs Motor de Docker en Ubuntu
Docker Desktop para Linux es un producto diferente al Motor de Docker. El Motor de Docker es el runtime del lado del servidor y el flujo de trabajo CLI que la mayoría de los usuarios de servidores Linux esperan, mientras que Docker Desktop agrega una GUI, integraciones de escritorio y una experiencia de producto más cercana al uso de Docker en macOS y Windows.
Usa Docker Desktop cuando:
- Quieres una experiencia de Docker gráfica.
- Quieres funciones de escritorio.
- Estás alineando con un equipo que estandariza en Docker Desktop.
- No te importa la capa adicional.
Usa el Motor de Docker cuando:
- Estás ejecutando un servidor.
- Quieres un runtime nativo de Linux simple.
- Prefieres servicios gestionados por systemd.
- Estás construyendo infraestructura CI, DevOps o autoalojada.
- No necesitas la GUI.
Para una audiencia de blog técnico avanzada, el Motor de Docker suele ser la opción predeterminada más interesante en servidores Linux y hosts de CI.
Post-Instalación: Ejecutar Docker Sin Sudo
Después de la instalación, esto funciona:
sudo docker ps
Pero esto puede fallar:
docker ps
Eso es porque el daemon de Docker escucha en un socket Unix propiedad de root. La corrección común es agregar tu usuario al grupo docker.
Crear el grupo si es necesario:
sudo groupadd docker
Agregar tu usuario:
sudo usermod -aG docker $USER
Aplicar la nueva membresía de grupo:
newgrp docker
O cerrar sesión e iniciar sesión de nuevo.
Probar:
docker run hello-world
Nota de Seguridad Importante Sobre el Grupo Docker
El grupo docker no es un grupo de conveniencia inofensivo. Un usuario que pueda controlar el daemon de Docker generalmente puede obtener control equivalente a root del host, por lo que para una máquina de desarrollo personal esto suele ser aceptable, pero en un servidor compartido es una decisión seria de control de acceso. Trata la membresía en el grupo docker como acceso de administrador, y si eso se siente demasiado amplio, considera Docker sin privilegios de root en su lugar.
Docker Sin Privilegios de Root (Rootless) en Ubuntu
Docker sin privilegios de root ejecuta el daemon de Docker y los contenedores como un usuario sin privilegios de root. Esto no es lo mismo que agregar tu usuario al grupo docker; con el grupo docker, el daemon aún se ejecuta como root, mientras que en el modo sin privilegios de root, el daemon en sí se ejecuta como tu usuario.
Cuándo Tiene Sentido Docker Sin Privilegios de Root
Docker sin privilegios de root es útil cuando:
- Quieres reducir el riesgo de root a nivel de daemon.
- Estás en una máquina de desarrollo compartida.
- Ejecutas contenedores propiedad del usuario.
- No necesitas cada característica avanzada de redes y almacenamiento.
- Quieres un valor predeterminado más seguro para cargas de trabajo experimentales.
Cuándo Docker Sin Privilegios de Root Puede Ser Molestoso
Docker sin privilegios de root puede ser menos conveniente cuando:
- Necesitas contenedores privilegiados.
- Dependes de la vinculación de puertos bajos sin configuración adicional.
- Necesitas algunos patrones de redes del host.
- Esperas un comportamiento idéntico a Docker con privilegios de root.
- Estás siguiendo guías escritas para instalaciones normales del Motor de Docker.
El modo sin privilegios de root mejora la postura de seguridad, pero no es cero fricción en comparación con una instalación estándar con privilegios de root.
Instalar Docker Sin Privilegios de Root
Instalar prerrequisitos:
sudo apt update
sudo apt install uidmap
Si instalaste Docker desde paquetes DEB o APT, la herramienta de configuración sin privilegios de root debería estar disponible:
dockerd-rootless-setuptool.sh install
Si Docker con privilegios de root ya está en ejecución y solo quieres Docker sin privilegios de root, deshabilita el daemon del sistema:
sudo systemctl disable --now docker.service docker.socket
También puede ser necesario eliminar el socket con privilegios de root:
sudo rm -f /var/run/docker.sock
Después de instalar Docker sin privilegios de root, la herramienta de configuración generalmente imprime variables de entorno para agregar a tu perfil de shell. Comúnmente se ven así:
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock
Tu UID puede diferir. Verifica la salida exacta de la herramienta de configuración.
Habilitar el lingering (permanencia) si deseas que el servicio de usuario se ejecute después de cerrar sesión:
sudo loginctl enable-linger $USER
Verificar el servicio de usuario:
systemctl --user status docker
Ejecutar un contenedor de prueba:
docker run hello-world
Docker Con Privilegios de Root vs Docker Sin Privilegios de Root
| Tema | Docker Con Privilegios de Root | Docker Sin Privilegios de Root |
|---|---|---|
| Usuario del daemon | root | usuario normal |
| Conveniencia de comando | alta | media |
| Compatibilidad | más alta | buena, pero no perfecta |
| Postura de seguridad | más débil por defecto | mejor por defecto |
| Contenedores privilegiados | soportados | limitados |
| Puertos bajos | simple | necesita configuración adicional |
| Uso en servidor | común | posible, pero planifica cuidadosamente |
| Estación de trabajo de desarrollo | común | bueno para usuarios conscientes de la seguridad |
Mi recomendación práctica:
- Usa Docker con privilegios de root normal para una máquina de desarrollo personal o un servidor simple.
- Agrega solo usuarios de confianza al grupo
docker. - Usa Docker sin privilegios de root cuando el aislamiento de usuario sea importante.
- No pretendas que el grupo
dockeres un límite de seguridad.
Habilitar Docker en el Inicio
En Ubuntu, Docker instalado desde paquetes normales generalmente comienza automáticamente, pero vale la pena confirmar después de una instalación fresca o migración.
Verificar:
systemctl is-enabled docker
systemctl is-enabled containerd
Habilitar manualmente si es necesario:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Iniciar ahora:
sudo systemctl start docker
Deshabilitar el inicio automático:
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
Para Docker sin privilegios de root, usa el servicio de usuario:
systemctl --user enable docker
systemctl --user start docker
Y habilitar el lingering si es necesario:
sudo loginctl enable-linger $USER
Instalar o Verificar Docker Compose
Con el repositorio APT oficial de Docker, instala Compose como un plugin:
sudo apt update
sudo apt install docker-compose-plugin
Verificar:
docker compose version
Si instalaste el paquete de Ubuntu, puedes usar:
sudo apt install docker-compose-v2
Preferir:
docker compose up -d
Sobre el estilo antiguo:
docker-compose up -d
El comando con guion docker-compose pertenece a la era anterior de Compose independiente. Muchos sistemas aún lo tienen, pero la nueva documentación debería usar docker compose.
Verificar Qué Docker Tienes Instalado
Cuando heredas una máquina o depuras una configuración rota, estos comandos ayudan a identificar qué empaquetado de Docker está realmente en uso.
Verificar el binario de Docker:
which docker
Verificar la propiedad del paquete:
dpkg -S "$(which docker)"
Listar paquetes relacionados con Docker:
dpkg -l | grep -E 'docker|containerd|runc'
Verificar la política de APT:
apt-cache policy docker-ce docker.io containerd.io docker-compose-plugin docker-compose-v2
Verificar Snap:
snap list | grep docker
Verificar el estado del servicio:
systemctl status docker
systemctl status containerd
Verificar detalles del servidor de Docker:
docker info
Si docker info falla sin sudo, verifica tu membresía de grupo:
groups
Migrar desde docker.io de Ubuntu a Docker CE
Detener Docker:
sudo systemctl stop docker
Eliminar paquetes de Ubuntu:
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc containerd runc
Agregar el repositorio APT oficial de Docker usando los pasos anteriores.
Instalar Docker CE:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Iniciar Docker:
sudo systemctl start docker
Verificar contenedores existentes:
docker ps -a
docker images
docker volume ls
Normalmente, eliminar paquetes no elimina /var/lib/docker, por lo que tus imágenes, contenedores y volúmenes pueden seguir existiendo. Sin embargo, haz una copia de seguridad de los datos importantes primero.
Migrar desde Docker Snap a Docker CE
Primero inspecciona qué existe:
snap list | grep docker
docker info
Detener cargas de trabajo y hacer copia de seguridad de volúmenes importantes o datos montados por vinculación.
Eliminar el snap:
sudo snap remove docker
Luego instalar Docker CE desde el repositorio APT oficial.
Ten cuidado con las ubicaciones de datos. Los paquetes Snap a menudo usan rutas diferentes y reglas de aislamiento. No asumas que los datos de Docker Snap aparecerán automáticamente bajo la ruta estándar /var/lib/docker después de la migración.
Para servicios importantes, exporta o haz copia de seguridad de los datos explícitamente antes de cambiar las fuentes de paquetes.
Fijar una Versión de Docker con APT
Para sistemas similares a producción, es posible que desees actualizaciones controladas.
Listar versiones disponibles:
apt list --all-versions docker-ce
Instalar una versión específica:
VERSION_STRING="5:29.0.0-1~ubuntu.24.04~noble"
sudo apt install docker-ce=$VERSION_STRING \
docker-ce-cli=$VERSION_STRING \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
Retener paquetes de Docker:
sudo apt-mark hold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Eliminar la retención más tarde:
sudo apt-mark unhold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Haz esto cuando necesites ventanas de cambio predecibles. Para una laptop personal, puede ser innecesario.
Notas Sobre Firewall y Redes
Docker modifica las reglas de filtrado de paquetes para que la red de contenedores funcione, lo cual es importante si usas UFW, firewalld, nftables o reglas de firewall personalizadas.
Puntos importantes:
- Los puertos de Docker publicados pueden omitir las expectativas ingenuas de UFW.
- Docker usa integración con iptables.
- Las reglas personalizadas deben tener en cuenta las cadenas creadas por Docker.
- El endurecimiento del servidor debe ser probado con mapeos reales de puertos de contenedores.
- No asumas que
ufw denyprotege un puerto publicado por Docker.
Prueba los puertos expuestos desde otra máquina, no solo desde localhost.
Ejemplo:
docker run --rm -p 8080:80 nginx
Luego desde otro host:
curl http://server-ip:8080
En servidores, la red de Docker es parte de tu modelo de seguridad, no un detalle de implementación que puedas ignorar después de la instalación.
Errores Comunes y Correcciones
Permiso Denegado en el Socket de Docker
Error:
permission denied while trying to connect to the Docker daemon socket
Opciones de corrección:
Usar sudo:
sudo docker ps
O agregar tu usuario al grupo docker:
sudo usermod -aG docker $USER
newgrp docker
Recuerda que el grupo docker es equivalente a root en la práctica, por lo que trata la membresía del grupo como una decisión de acceso privilegiado.
El Daemon de Docker No Está Ejecutándose
Verificar estado:
sudo systemctl status docker
Iniciarlo:
sudo systemctl start docker
Verificar registros:
journalctl -u docker --no-pager -n 100
Paquetes de Docker Conflictivos
Si la instalación de Docker CE falla debido a conflictos, elimina los paquetes antiguos. Si APT mismo está en un mal estado después de agregar el repositorio de Docker, trabaja a través de Solución de problemas de APT en Ubuntu para paquetes rotos y errores GPG antes de reintentar.
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
Luego reintenta:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Comando Compose No Encontrado
Verificar Compose moderno:
docker compose version
Instalar plugin:
sudo apt install docker-compose-plugin
Si esperabas el comando antiguo:
docker-compose version
Puede que estés siguiendo documentación antigua. Prefiere actualizar el comando a docker compose.
Configuración Antigua de Docker con Privilegios de Root
Si ejecutaste Docker con sudo antes de configurar el acceso de grupo, tu configuración de usuario puede ser propiedad de root.
Corregir propiedad:
sudo chown "$USER":"$USER" "$HOME/.docker" -R
sudo chmod g+rwx "$HOME/.docker" -R
O eliminar la configuración si no la necesitas:
sudo rm -rf "$HOME/.docker"
Se recreará.
No Se Puede Conectar a Docker Sin Privilegios de Root
Verificar entorno:
echo "$DOCKER_HOST"
Verificar servicio de usuario:
systemctl --user status docker
Establecer la ruta del socket si es necesario:
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Agrégalo a tu perfil de shell solo después de confirmar que es correcto.
Desinstalar el Motor de Docker
Eliminar paquetes de Docker CE:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
Eliminar datos de Docker solo si realmente deseas eliminar imágenes, contenedores y volúmenes:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Eliminar archivos de repositorio de Docker:
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo rm -f /etc/apt/keyrings/docker.asc
Actualizar APT:
sudo apt update
Para Docker Snap:
sudo snap remove docker
Para docker.io de Ubuntu:
sudo apt purge docker.io docker-compose-v2
Ruta de Instalación Recomendada para la Mayoría de los Usuarios de Ubuntu
Para la mayoría de los usuarios técnicos de Ubuntu, esta es la ruta limpia:
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt keyrings/docker.asc
EOF
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
Luego decide si deseas acceso de grupo por conveniencia o Docker sin privilegios de root para un aislamiento más estricto:
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
Orientación Opinada Final
La instalación de Docker en Ubuntu es una elección operativa, no solo una elección de paquete. El método que elijas afecta las actualizaciones, los límites de seguridad y qué tan cerca coincide tu host con la documentación upstream de Docker.
Mis reglas prácticas son:
- Usa el repositorio APT oficial de Docker para la mayoría de las máquinas de desarrollo y DevOps.
- Usa
docker.iode Ubuntu cuando la consistencia del repositorio de Ubuntu sea más importante que la frescura upstream. - Evita Docker Snap para flujos de trabajo de contenedores serios a menos que desees intencionalmente el comportamiento de Snap.
- Evita el script de conveniencia para hosts de producción.
- Usa
docker composemoderno, nodocker-composeantiguo. - Trata el grupo
dockercomo acceso privilegiado. - Considera Docker sin privilegios de root cuando el aislamiento de usuario sea importante.
- Fija versiones en sistemas similares a producción.
- Prueba el comportamiento del firewall al publicar puertos en servidores.
La instalación de Docker más aburrida suele ser la mejor: repositorio APT oficial, anillo de claves explícito, plugin Compose, servicio systemd, permisos entendidos y ninguna capa de empaquetado misteriosa en el medio. Una vez que el motor está en su lugar, las cargas de trabajo de múltiples servicios, incluidas las pilas de LLM autoalojadas, son el siguiente paso natural; por ejemplo, ver Ollama en Docker Compose para ejecutar modelos locales en contenedores. Para mantener una pila Compose en ejecución entre reinicios en un servidor, Ejecutar Docker Compose como Servicio de Linux con systemd recorre archivos de unidad y hábitos operativos.
Leer Más
- https://docs.docker.com/engine/install/ubuntu/ “Instalar el Motor de Docker en Ubuntu | Documentos de Docker”
- https://packages.ubuntu.com/noble/docker.io “Ubuntu - Detalles del paquete docker.io en noble”