Nueva etapa de la serie: infraestructura. Y empezamos por la herramienta que cambió cómo desarrollamos: Docker. En este artículo vas a aprender exactamente cómo instalar Docker Engine en Ubuntu o WSL desde el repositorio oficial, con Docker Compose incluido y tu usuario configurado para trabajar sin sudo.
Docker resuelve el problema que esta serie lleva semanas atacando por partes: “en mi máquina funciona”. Bases de datos, servicios y entornos completos definidos en un archivo, idénticos en tu máquina y en la de cualquiera. En mis proyectos es la pieza que evita instalar servicios que solo un proyecto necesita.
El problema con Docker en Ubuntu es elegir mal la fuente: el paquete docker.io de los repos de Ubuntu va retrasado, y los tutoriales viejos instalan piezas sueltas que luego pelean entre sí. El camino correcto es el repositorio oficial de Docker, y es el que sigue esta guía.
Vamos a ver:
- Preparar el repositorio oficial de Docker.
- Instalar Docker Engine con Compose incluido.
- Configurar tu usuario para trabajar sin
sudo. - Verificar todo con un contenedor real.
Al final tendrás Docker funcionando y listo para levantar lo que tus proyectos pidan.
¿Ya usas Docker Desktop en Windows con integración WSL? Entonces ya tienes Docker dentro de tu distro y no necesitas esta instalación. Esta guía instala Docker Engine nativo en WSL: mi preferencia por ser más ligero y sin condiciones de licencia.
Tabla de contenidos
Tabla de contenidos
Paso 1: Limpia instalaciones anteriores
Si alguna vez instalaste Docker por otro camino, retira las piezas viejas para que no interfieran:
sudo apt remove -y docker docker-engine docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
Si no tenías nada, el comando no hace daño: sigue.
Paso 2: Añade el repositorio oficial de Docker
Instala las dependencias y registra la clave GPG oficial:
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
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
Y configura 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
Paso 3: Instala Docker Engine (con Compose incluido)
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Fíjate en el último paquete: Docker Compose ya viene como plugin. Nada de instalarlo aparte como en los tutoriales viejos; hoy es el subcomando docker compose.
Verifica ambos:
docker --version
docker compose version
Paso 4: Trabaja sin sudo
Docker corre como servicio del sistema, y por defecto solo root puede hablarle. Agrégate al grupo docker:
sudo usermod -aG docker $USER
El cambio de grupo no aplica a las sesiones abiertas. Cierra sesión y vuelve a entrar; en WSL, lo más rápido es wsl --shutdown desde PowerShell y abrir la distro de nuevo.
Paso 5: Verifica con un contenedor real
La prueba de fuego de toda instalación de Docker:
docker run hello-world
Si ves el mensaje “Hello from Docker!”, todo el flujo funciona: el CLI habló con el daemon, descargó una imagen y ejecutó un contenedor.
Y el primer uso real, el que harás el día dos: levantar un servicio para un proyecto. Por ejemplo, un PostgreSQL descartable sin instalar nada (en el puerto 5433, para no chocar con el nativo que instalamos la semana pasada):
docker run --name pg-prueba -e POSTGRES_PASSWORD=secreto -p 5433:5432 -d postgres:18
docker ps
docker stop pg-prueba && docker rm pg-prueba
Solución de problemas comunes
permission denied while trying to connect to the Docker daemon
Es el Paso 4 pendiente: falta el grupo o falta reiniciar la sesión.
Cannot connect to the Docker daemon
El servicio no está corriendo:
sudo systemctl enable docker
sudo systemctl start docker
En WSL moderno funciona tal cual (systemd viene habilitado); si tu WSL es antiguo, sudo service docker start o actualiza con wsl --update.
Mantenimiento
Docker se actualiza con el sistema, porque quedó en tus fuentes de apt:
sudo apt update && sudo apt upgrade
Y de vez en cuando, limpia imágenes y contenedores huérfanos:
docker system prune
Conclusión
Docker Engine desde la fuente oficial, Compose incluido, tu usuario sin sudo y un contenedor verificado de punta a punta: la base de infraestructura sobre la que un proyecto entero se levanta con un solo comando.
Si esto te fue útil, el artículo relacionado es el paso lógico: Cómo instalar y configurar PostgreSQL en Ubuntu y WSL, para comparar la instalación nativa con el contenedor descartable que acabamos de levantar.
El jueves publico esta misma configuración para macOS, donde el camino es distinto: Docker Desktop. Si no te lo quieres perder, suscríbete al newsletter en la portada del blog.