Guía técnica para desplegar Docker Engine en Ubuntu 24.04 LTS

Introducción y cosnideraciones previas

Aunque los repositorios predeterminados de Ubuntu incluyen paquetes de Docker, esta vía suele ofrecer versiones desactualizadas y retrasos en los parches de seguridad críticos. Para entornos de producción o desarrollo activo, la práctica recomendada es integrar el repositorio oficial de Docker, garantizando así el acceso a las últimas características y actualizaciones de seguridad automatizadas.

Nota: Todas las opreaciones de administración de paquetes y configuración del sistema requieren privilegios de superusuario.

Preparación del entorno y dependencias

Antes de agregar nuevas fuentes de software, es fundamental sincronizar el índice de paquetes local. En Ubuntu 24.04, el transporte HTTPS ya está integrado nativamente en apt, por lo que solo necesitamos asegurar los certificados y la herramienta de descarga.

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings

Integración del repositorio oficial

El método moderno para gestionar las claves GPG en Debian/Ubuntu evita el uso de gpg --dearmor. En su lugar, descargamos la clave en formato ASCII blindado y ajustamos sus permisos para que el gestor de paquetes pueda leerla.

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

A continuación, inyectamos la definición del repositorio en la lista de fuentes de APT, detectando dinámicamente la arquitectura del sistema y el nombre clave de la distribución:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Despliegue del motor y componentes adicionales

Procedemos a instalar el ecosistema completo de Docker. Esto no solo instala el daemon, sino también las herramientas de línea de comandos, el runtime de bajo nivel y los plugins modernos para construcción y orquestación.

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Desglose de los componentes instalados:

  • docker-ce: El motor principal de Docker (Community Edition).
  • docker-ce-cli: La interfaz de línea de comandos para interactuar con el daemon.
  • containerd.io: El runtime de contenedores de nivel industrial que maneja el ciclo de vida de las imágenes y la ejecución.
  • docker-buildx-plugin: Extensión de CLI que habilita capacidades avanzaads de BuildKit, incluyendo compilaciones multiplataforma.
  • docker-compose-plugin: Integración nativa para definir y ejecutar aplicaciones multi-contenedor mediante manifiestos YAML.

Validación del servicio

Verificamos que el daemon se haya iniciado correctamente tras la instalación inspeccionando su estado en systemd:

sudo systemctl status docker --no-pager

Para confirmar que el motor puede extraer imágenes y ejecutar contenedores efímeros, lanzamos la imagen de prueba:

sudo docker run --rm hello-world

Optimización de red mediante registros espejo

En regiones con restricciones de ancho de banda o latencia hacia Docker Hub, configurar registros espejo mejora drásticamente los tiempos de extracción. En lugar de usar un editor interactivo, podemos generar el archivo de configuración del daemon directamente mediante un heredoc.

sudo mkdir -p /etc/docker
cat <<eof eof="" sudo="" tee=""></eof>

Nota técnica: La disponibilidad de los espejos públicos puede fluctuar o ser discontinuada por sus mantenedores. Se recomienda monitorear su estado periódicamente.

Recargamos la configuración de systemd y reiniciamos el servicio para aplicar los cambios:

sudo systemctl daemon-reload
sudo systemctl restart docker

Confirmamos que los espejos están activos consultando la información del sistema:

sudo docker info | grep -A 5 "Registry Mirrors"

Delegación de privilegios a usuarios no root

Por defecto, el socket de Docker requiere permisos de root. Para permitir que un usuario estándar interactúe con el daemon sin usar sudo, lo añadimos al grupo dedicado. Utilizamos newgrp para aplicar los cambios de grupo en la sesión actual sin necesidad de reiniciar el sistema operativo.

sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker $USER
newgrp docker

Procedimiento de desinstalación y limpieza

Si es necesario eliminar el entorno de Docker, primero purgamos los paquetes y sus dependencias huérfanas:

sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt-get autoremove -y

Finalmente, eliminamos los directorios persistentes que almacenan las imágenes, contenedores, volúmenes y configuraciones del runtime:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Etiquetas: docker-engine ubuntu-2404 containerd docker-compose linux-administration

Publicado el 7-9 02:16