O Docker deixa-te montar sites, bases de dados, bots e painéis em contentores isolados, cada um com as suas dependências e sem sujar o sistema.
Instalá-lo
O script oficial instala o Docker e o plugin do Compose em Ubuntu e Debian:
curl -fsSL https://get.docker.com | sh
Confirma que funciona:
docker run --rm hello-world
docker compose version
Um exemplo com o Compose
Cria uma pasta com um docker-compose.yml, por exemplo para um site simples:
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
docker compose up -d # arrancar em segundo plano
docker compose logs -f # ver os logs
docker compose down # pará-lo
O restart: unless-stopped faz com que volte sozinho depois de reiniciar o VPS.
Atenção: o Docker passa por cima do ufw
As portas que publicas com ports: (ou -p) ficam abertas à Internet mesmo que o ufw diga que estão fechadas, porque o Docker escreve as suas próprias regras na firewall. É a causa de muitas bases de dados expostas sem querer.
Se um serviço só é usado por outros contentores ou pelo próprio servidor, publica-o só em local:
ports:
- "127.0.0.1:3306:3306"
E entre contentores do mesmo docker-compose.yml não é preciso publicar nada: veem-se pelo nome do serviço.
Limpeza
As imagens antigas acumulam-se e enchem o disco. De vez em quando:
docker system prune
Apaga contentores parados, redes sem uso e imagens sem etiqueta. Pede-te confirmação antes.