Marcio Cunha

Cómo Instalar y Administrar Docker en Ubuntu Server con Mejores Prácticas

Aprenda el proceso completo para instalar, configurar y gestionar Docker y Docker Compose en entornos Ubuntu Server, garantizando seguridad robusta y alta disponibilidad.

Marcio Cunha12 min
También disponible en:EnglishPortuguês
Resumen
  • La configuración correcta de los repositorios oficiales evita paquetes desactualizados y vulnerabilidades.
  • La gestión adecuada de permisos elimina la necesidad de usar sudo en cada comando de contenedores.
  • El uso de Docker Compose simplifica la orquestación de múltiples servicios interconectados en producción.
  • La limpieza regular de volúmenes huérfanos y imágenes sin uso preserva recursos críticos de disco.
  • El monitoreo continuo de registros y consumo de recursos previene cuellos de botella operativos.

Fundamentos de Docker en Servidores Ubuntu

Docker revolucionó la forma en que empaquetamos y entregamos software al encapsular aplicaciones y sus dependencias dentro de unidades aisladas llamadas contenedores, funcionando como cajas cerradas independientes del sistema operativo anfitrión. En lugar de instalar paquetes directamente en Ubuntu Server corriendo el riesgo de generar conflictos de bibliotecas, Docker aislar cada servicio, garantizando que lo que se ejecuta en su computadora de desarrollo funcione exactamente igual en el servidor de producción. Este enfoque reduce drásticamente el tiempo de configuración de entornos y facilita la replicación de infraestructura en nubes públicas o servidores locales.

Antes de pasar a la práctica, comprender los compromisos arquitectónicos es fundamental. Mientras que las máquinas virtuales tradicionales duplican todo un sistema operativo, consumiendo mucha memoria RAM y espacio en disco, Docker comparte el núcleo de Ubuntu Server entre los contenedores, permitiendo un arranque casi instantáneo y un consumo mínimo de recursos. La desventaja es que compartir la misma base del sistema exige prácticas rigurosas de seguridad y aislamiento de red, temas que exploraremos a lo largo de esta guía.

Preparación del Entorno y Eliminación de Versiones Anteriores

El primer paso práctico para una instalación limpia en Ubuntu Server consiste en purgar cualquier rastro de versiones antiguas de Docker que puedan haber sido instaladas a través de administradores de paquetes estándar. Herramientas heredadas como docker, docker-engine o docker.io pueden entrar en conflicto con el repositorio oficial moderno, generando comportamientos impredecibles y errores de dependencia difíciles de diagnosticar. Para asegurar un punto de partida totalmente neutral, ejecutamos comandos de eliminación segura en la terminal del servidor.

Con el sistema limpio, actualizamos la lista de paquetes de Ubuntu e instalamos dependencias esenciales que permiten al administrador de paquetes apt buscar contenido a través de conexiones cifradas HTTPS. En la práctica, esto significa preparar el terreno para que Ubuntu confíe en fuentes externas seguras. El comando de actualización garantiza que todos los componentes fundamentales del sistema operativo estén en su versión más reciente, minimizando brechas de seguridad antes de añadir nuevas tecnologías al servidor.

Configuración del Repositorio Oficial e Instalación

Para tener acceso constante a las versiones más estables y recientes de Docker, utilizar el repositorio oficial mantenido por los desarrolladores del proyecto es superior a depender de los paquetes predeterminados de Ubuntu. Añadimos la clave GPG oficial de Docker —una firma digital cifrada que valida la autenticidad de los archivos descargados—, asegurando que ningún código malicioso ingrese al servidor durante el proceso de descarga.

A continuación, registramos el repositorio oficial compatible con la versión específica de Ubuntu que corre en su máquina. Con el repositorio debidamente registrado y actualizado, instalamos el motor principal de Docker, la interfaz de línea de comandos y el complemento Docker Compose, herramienta indispensable para gestionar múltiples contenedores simultáneamente mediante un único archivo de configuración en texto.

sudo apt update
sudo apt install ca-certificates curl gnupg
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
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] 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 update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Validación de la Instalación y Gestión de Permisos

Tan pronto como finaliza el proceso de instalación, el servicio de Docker se inicia automáticamente a través de systemd, el administrador de servicios estándar de Ubuntu. Podemos verificar el éxito ejecutando un contenedor de prueba simple, como hello-world, que descarga una imagen ligera de internet, ejecuta un comando básico para probar que el motor funciona y finaliza mostrando un mensaje de éxito en la terminal.

Por defecto, solo el usuario root o usuarios con privilegios administrativos pueden interactuar con el demonio de Docker —el proceso en segundo plano que gestiona los contenedores—. Para evitar escribir la contraseña de administrador en cada comando, añadimos su usuario actual al grupo docker. En la práctica, esto agiliza las operaciones diarias, aunque requiere precaución ya que cualquier proceso ejecutado por su usuario obtendrá control total sobre los contenedores del servidor.

sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

Administración Diaria y Mejores Prácticas de Mantenimiento

Administrar Docker en un Ubuntu Server va mucho más allá de simplemente desplegar contenedores; exige rutinas constantes de mantenimiento para evitar que el disco del servidor se llene con datos huérfanos. Con el tiempo, imágenes antiguas que ya no se utilizan, volúmenes de datos sin asociación y contenedores detenidos acumulan gigabytes de espacio innecesario. El comando prune actúa como una herramienta de limpieza profunda, eliminando todos estos recursos que ocupan almacenamiento inútil.

Otro punto crítico en la administración es la gestión de registros generados por las aplicaciones dentro de los contenedores. Si no se limitan, los archivos de registro pueden crecer indefinidamente y colapsar el servidor por falta de espacio en disco. Configuramos políticas de rotación de registros directamente en el archivo de configuración global del demonio Docker, asegurando que los archivos antiguos se eliminen automáticamente tras alcanzar un límite de tamaño predeterminado.

Orquestación Básica con Docker Compose

Gestionar varios contenedores interconectados —como una aplicación web conectada a una base de datos y un sistema de caché— usando únicamente comandos manuales en la terminal se vuelve rápidamente inviable y propenso a errores humanos. Aquí es donde entra Docker Compose, permitiendo describir toda la infraestructura de servicios en un único archivo estructurado en formato YAML donde definimos redes, volúmenes, variables de entorno y reglas de reinicio automático.

Con un simple comando de arranque en la terminal, Docker Compose lee el archivo de configuración, crea las redes necesarias, descarga las imágenes correctas y pone en marcha todos los servicios en el orden adecuado de dependencia. Si el servidor se reinicia, las políticas configuradas aseguran que las aplicaciones vuelvan a funcionar automáticamente sin intervención manual, garantizando la resiliencia operativa.

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    restart: always
  database:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: clave_segura
    restart: always

Consideraciones Finales

Instalar y administrar Docker en Ubuntu Server transforma la manera en que gestiona aplicaciones, ofreciendo un equilibrio perfecto entre aislamiento, portabilidad y eficiencia de recursos computacionales. Al seguir los procedimientos correctos de instalación mediante el repositorio oficial, configurar permisos adecuados y adoptar rutinas regulares de mantenimiento de disco y registros, usted construye una base sólida y confiable para llevar cualquier proyecto a producción.

La evolución natural de este conocimiento implica explorar conceptos más avanzados de redes virtuales aisladas, estrategias de respaldo automatizado para volúmenes persistentes y monitoreo proactivo de métricas de rendimiento. Con disciplina operativa y dominio de las herramientas nativas, su servidor Ubuntu estará preparado para soportar cargas de trabajo exigentes con estabilidad y seguridad a largo plazo.