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
sudoconstantemente. - 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!
#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:
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:
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:
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
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:
curl localhost:8080
# Deberías recibir el código HTML de bienvenida de Nginx.
#Troubleshooting Frecuente
- Error «permission denied» al usar docker: Significa que el Paso 2 no se aplicó bien. Asegúrate de haber ejecutado
newgrp dockero, mejor aún, reinicia el ordenador. - El puerto 8080 ya está en uso: Si ya tienes algo ahí, Docker te dará un error. Cambia el comando por
-p 9000:80y prueba enlocalhost: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:
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:
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 |

