Docker te deja montar webs, bases de datos, bots y paneles en contenedores aislados, cada uno con sus dependencias y sin ensuciar el sistema.
Instalarlo
El script oficial instala Docker y el plugin de Compose en Ubuntu y Debian:
curl -fsSL https://get.docker.com | sh
Comprueba que funciona:
docker run --rm hello-world
docker compose version
Un ejemplo con Compose
Crea una carpeta con un docker-compose.yml, por ejemplo una web sencilla:
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
docker compose up -d # arrancar en segundo plano
docker compose logs -f # ver los logs
docker compose down # pararlo
restart: unless-stopped hace que vuelva solo tras reiniciar el VPS.
Ojo: Docker se salta ufw
Los puertos que publicas con ports: (o -p) se abren a Internet aunque ufw diga que están cerrados, porque Docker escribe sus propias reglas en el cortafuegos. Es la causa de muchas bases de datos expuestas sin querer.
Si un servicio solo lo usan otros contenedores o el propio servidor, publícalo solo en local:
ports:
- "127.0.0.1:3306:3306"
Y entre contenedores del mismo docker-compose.yml no hace falta publicar nada: se ven por el nombre del servicio.
Limpieza
Las imágenes viejas se acumulan y llenan el disco. De vez en cuando:
docker system prune
Borra contenedores parados, redes sin uso e imágenes sin etiqueta. Te pide confirmación antes.