Docker e Portainer na VPS: instalação e primeiros containers

João Guilherme

João Guilherme

Última atualização em Sep 29, 2026

1. Instalar o Docker (Ubuntu/Debian/AlmaLinux)

curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker
docker run --rm hello-world     # teste

Para usar sem sudo: sudo usermod -aG docker $USER e faça login de novo.

2. Portainer (interface web)

docker volume create portainer_data
docker run -d --name portainer --restart=always \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Abra https://IP-DA-VPS:9443 (aceite o certificado autoassinado) e crie o usuário admin nos primeiros 5 minutos, senão o Portainer bloqueia e você precisa reiniciá-lo.

Segurança: não deixe a 9443 aberta para o mundo. Libere só para o seu IP (sudo ufw allow from SEU-IP to any port 9443) ou acesse pela rede privada do Tailscale. Melhor ainda: coloque atrás do Nginx com um domínio e certificado (guia).

3. Conceitos que evitam dor de cabeça

  • Volume: onde os dados vivem. Container pode ser recriado à vontade; volume não. Sempre defina volumes para bancos e uploads.
  • Portas: -p 8080:80 expõe a porta 80 do container na 8080 da VPS, para a internet. Use -p 127.0.0.1:8080:80 quando só o Nginx local deve acessar.
  • Docker ignora o ufw para portas publicadas. Publique apenas o necessário (detalhes).
  • --restart=always: sobe junto com a VPS.

4. Docker Compose (projetos com mais de um container)

Crie uma pasta por projeto com um docker-compose.yml:

services:
  app:
    image: nginx:alpine
    ports: ["127.0.0.1:8080:80"]
    volumes: ["./site:/usr/share/nginx/html:ro"]
    restart: unless-stopped
docker compose up -d
docker compose logs -f
docker compose pull && docker compose up -d     # atualizar

No Portainer, a mesma coisa em Stacks → Add stack colando o YAML. Exemplos prontos: n8n, WordPress, Evolution API.

5. Manutenção

docker ps -a                    # containers
docker stats                    # CPU/RAM por container
docker system df                # espaço usado
docker system prune             # limpa o que não está em uso

Imagens antigas acumulam gigabytes; se o disco encher, veja Disco cheio. Inclua /var/lib/docker/volumes no seu backup automático.