Docker en Ubuntu 25: Despliegue de tu primer servicio paso a paso

QUÉ VAMOS A CONSTRUIR

  • Instalación limpia del motor de Docker y Docker Compose en Ubuntu 25.
  • Configuración de permisos para manejar contenedores sin usar sudo constantemente.
  • Despliegue de un servidor web «Hola Mundo» para validar que tu infraestructura de auto-hospedaje está lista.

Si alguna vez has intentado instalar un servidor web, una base de datos o un panel de control directamente en tu sistema, sabrás que acabarás con carpetas basura por todos lados y dependencias que chocan entre sí. Al final, tu sistema se vuelve más peligroso que robarle un flan a Steven Seagal. Docker soluciona esto metiendo cada aplicación en una «caja» aislada que no ensucia nada.

Este es el primer paso para cualquier sysadmin o entusiasta del self-hosting. Vamos a montar el motor para que puedas probar cualquier software en segundos y borrarlo sin dejar rastro si no te gusta.

#Requisitos Previos

  • Ubuntu 25 (aunque funciona en versiones anteriores, los nombres de los paquetes han sido validados para esta).
  • Conexión a internet para descargar las imágenes de los contenedores.
  • Unos 500MB de espacio libre en disco para empezar con el motor y la primera imagen.

¡CUIDADO!

No instales Docker usando la tienda de aplicaciones (Snap) si tienes pensado hacer integraciones complejas de red o volumen. La versión del repositorio oficial de Docker es mucho más flexible y es la que usaremos aquí.

#Paso a Paso

#Paso 1: Instalación del motor oficial

Vamos a usar el repositorio oficial para asegurarnos de tener la versión más estable y segura. Olvida los paquetes antiguos que vienen por defecto.

Preparar el sistema e instalar el motor de contenedores:

bash
sudo apt update && sudo apt install -y ca-certificates curl gnupg
# Añadimos la clave GPG oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Configuramos el repositorio
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

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

#Paso 2: Permisos de usuario (Docker sin sudo)

Por defecto, Docker requiere que seas root. Vamos a añadir tu usuario al grupo de Docker.

Dar permisos a tu usuario actual:

bash
sudo usermod -aG docker $USER
# IMPORTANTE: Para que esto funcione, debes cerrar sesión y volver a entrar
# o ejecutar el siguiente comando para aplicar los cambios al vuelo:
newgrp docker

#Paso 3: Desplegar tu primer contenedor

Vamos a levantar un servidor web Nginx ligero. No necesitamos descargar nada manualmente; Docker se encarga de todo.

Lanzar un contenedor que sirva una página en el puerto 8080:

bash
docker run -d -p 8080:80 --name mi-primer-web nginx
# -d: Corre en segundo plano (daemon)
# -p: Mapea el puerto 8080 de tu PC al 80 del contenedor
# --name: Le da un nombre humano para poder detenerlo luego

TIP PRO

Usa el comando docker ps para ver qué contenedores están vivos ahora mismo. Verás el ID, la imagen y cuánto tiempo llevan encendidos.

#Validación: ¿Funciona mi infraestructura?

Abre tu navegador favorito y escribe en la barra de direcciones: localhost:8080. Si ves una página que dice «Welcome to nginx!», felicidades: tienes un servidor web real corriendo dentro de un contenedor aislado.

Si prefieres validar por terminal:

bash
curl localhost:8080
# Deberías recibir el código HTML de bienvenida de Nginx.

#Troubleshooting Frecuente

  1. Error «permission denied» al usar docker: Significa que el Paso 2 no se aplicó bien. Asegúrate de haber ejecutado newgrp docker o, mejor aún, reinicia el ordenador.
  2. El puerto 8080 ya está en uso: Si ya tienes algo ahí, Docker te dará un error. Cambia el comando por -p 9000:80 y prueba en localhost:9000.

#Plan de Rollback / Limpieza

¿No quieres dejar rastro del servidor de prueba? ¿Quieres borrar Docker porque no es para ti? Así es como se deja la casa limpia.

Detener y borrar el contenedor de prueba:

bash
docker stop mi-primer-web
docker rm mi-primer-web
# Borramos también la imagen descargada para liberar espacio
docker rmi nginx

Desinstalar Docker completamente del sistema:

bash
sudo apt purge -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/apt/sources.list.d/docker.list

Este tutorial sigue los estándares de instalación de 2026. Si vas a usar esto profesionalmente, el siguiente paso es aprender a usar archivos YAML con Docker Compose para gestionar varios contenedores a la vez (como una base de datos + una web).

Tarea Comando Clandestino / Ruta
Listar contenedores activos docker ps
Ver consumos de recursos docker stats
Ver logs de un contenedor docker logs -f [nombre]
Borrar todo lo que no se use docker system prune -a

 

#Otros comandos si vas a seguir utilizando Docker

Acción Comando
Ver qué hay encendido docker ps
Ver todo (incluido lo parado) docker ps -a
Para un contenedor docker stop nombre
Arrancar uno parado docker start nombre
Borrar un contenedor docker rm nombre
Ver los logs (qué está pasando) docker logs -f nombre