Runzos

Docker no VPS: Guia Passo a Passo para Iniciantes em 2026

Por Maicon Ramos · · atualizado em 24 de julho de 2026 · 13 min de leitura

Container Docker em ambiente VPS com interface de terminal, servidores em rack e infraestrutura em nuvem
Navegue por tópicos
  1. O que é Docker (e por que você deveria usar no seu VPS)
  2. Instalação do Docker no Ubuntu 22.04/24.04 LTS
  3. Comandos essenciais de Docker para começar
  4. Docker Compose — orquestrando múltiplos containers
  5. Docker Compose na prática com n8n
  6. Segurança: non-root user, firewall e boas práticas
  7. Docker em VPS com recursos limitados (1-2 GB RAM)
  8. Quando evitar Docker no VPS
  9. FAQ
  10. Conclusão

Docker empacota aplicações em containers: ambientes isolados que rodam em qualquer VPS com Linux. Neste guia prático de 2026, você vai instalar Docker no Ubuntu 22.04, dominar os comandos essenciais, subir WordPress e n8n com Docker Compose, e evitar erros que consomem toda a RAM de VPS de entrada.

Você comprou uma VPS para sair da hospedagem compartilhada. Instalou um painel de controle, subiu alguns serviços, e em duas horas descobriu que 2 GB de RAM não são tanta coisa assim. O culpado não é a VPS: é a falta de planejamento antes de rodar containers.

Segundo dados de 2025-2026, 92% dos profissionais de TI usam containers em produção. Docker não é mais uma tecnologia experimental — é o padrão para empacotar e distribuir aplicações. Mas adotar containers sem entender o impacto no hardware é o erro mais comum de quem começa com VPS.

Este guia foi feito para o dev brasileiro que tem uma VPS (ou vai contratar uma) e quer usar Docker do jeito certo: com comandos reais, exemplos práticos e dicas honestas sobre recursos limitados.

Container Docker em ambiente VPS com interface de terminal, servidores em rack e infraestrutura em nuvem

Docker em VPS: containers isolados rodando aplicacoes em servidor Ubuntu Linux

O que é Docker (e por que você deveria usar no seu VPS)

💡 Vai rodar n8n numa VPS? A gente comparou o preço real em cada provedor — com renovação e requisitos — em VPS para n8n.

💡 Antes de escolher: a Calculadora de Custo de VPS e Hospedagem compara o preço real de 41 planos — promoção, renovação e câmbio — e mostra qual sai mais barato pro seu caso.

Docker é uma plataforma que cria ambientes isolados chamados containers. Cada container carrega uma aplicação e suas dependências (bibliotecas, configurações e variáveis de ambiente), sem interferir no sistema hospedeiro nem nos outros containers.

Container não é máquina virtual — entenda a diferença

A confusão mais comum de quem começa é achar que container e VM são a mesma coisa. Não são. A diferença está no nível de isolamento:

Característica

Container Docker

Máquina Virtual

Isolamento | Kernel compartilhado | Kernel próprio |

| Performance | Praticamente nativa | Overhead do hypervisor |

| Inicialização | Segundos | Minutos |

| Tamanho da imagem | Dezenas a centenas de MB | GB |

| Uso de RAM | Só o processo rodando | SO convidado + processo |

Uma VM roda um sistema operacional completo (Linux convidado sobre Linux hospedeiro), o que consome recursos fixos mesmo sem aplicação rodando. Um container roda apenas o processo da aplicação, compartilhando o kernel do hospedeiro. Por isso containers inicializam em segundos e consomem menos RAM.

Diagrama comparativo entre container Docker e maquina virtual mostrando camadas de virtualizacao e kernel compartilhado

Container compartilha o kernel do hospedeiro e consome menos recursos que uma VM

Para que serve Docker no dia a dia de um VPS

Os usos mais comuns de Docker em VPS no Brasil:

Self-hosting de automações: n8n em container com PostgreSQL e Redis
Site WordPress: instância isolada com MySQL, facilmente replicável
Ambiente de desenvolvimento: banco de dados, filas, APIs em containers separados
Proxy reverso: Traefik ou Nginx gerenciando SSL de múltiplos serviços

O ganho principal é previsibilidade: o container que roda na sua máquina local é o mesmo que roda no VPS. Chega de “na minha máquina funciona”.

Instalação do Docker no Ubuntu 22.04/24.04 LTS

A instalação do Docker Engine no Ubuntu é o primeiro passo prático. A documentação oficial do Docker mantém as instruções atualizadas. Aqui está a versão resumida e testada.

Método 1: Template 1-click da Hostinger (para iniciantes)

Se você contratou uma VPS na Hostinger, o caminho mais rápido é usar o template de SO com Docker pré-instalado. No painel da Hostiner, ao criar uma nova VPS, escolha o template “Ubuntu 22.04 64bit com Docker”. O servidor já vem com Docker Engine, containerd e Docker Compose V2 instalados.

É a opção ideal para quem quer pular a instalação manual e ir direto para os comandos práticos.

A documentação oficial também oferece o script de instalação automatizada para quem prefere começar de um sistema limpo.

Método 2: Instalação manual passo a passo

A instalação manual em 5 comandos:

bash
# Atualizar pacotes e instalar pré-requisitos
sudo apt update && sudo apt install -y ca-certificates curl

# Adicionar a chave GPG oficial do Docker
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Adicionar o repositório do Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalar Docker Engine + Docker Compose V2
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Pronto. Docker está instalado. Teste com:

bash
sudo docker run hello-world

Se aparecer uma mensagem de confirmação do Docker, a instalação funcionou.

Pós-instalação: configurar Docker sem sudo

Por padrão, o daemon do Docker roda como root. Para executar comandos sem sudo, adicione seu usuário ao grupo docker:

bash
sudo usermod -aG docker $USER

Saia da sessão SSH e entre novamente para o grupo ser aplicado. Depois disso, docker ps funciona sem sudo. Os passos de pós-instalação explicam isso em detalhes.

Terminal Linux com comandos Docker como docker ps, docker run e docker compose em ambiente VPS escuro

Comandos essenciais do Docker para gerenciar containers no terminal do VPS

Comandos essenciais de Docker para começar

Cinco comandos cobrem 90% do que você vai fazer no dia a dia:

Comando

O que faz

Exemplo

docker run | Cria e inicia um container | docker run -d -p 8080:80 nginx |

| docker ps | Lista containers rodando | docker ps -a (inclui parados) |

| docker stop | Para um container | docker stop container_id |

| docker rm | Remove um container | docker rm container_id |

| docker logs | Exibe logs de um container | docker logs -f container_id |

Para gerenciar imagens:

docker images: lista imagens baixadas localmente
docker pull nome-da-imagem: baixa uma imagem sem rodar o container
docker rmi nome-da-imagem: remove uma imagem não utilizada

Para executar comandos dentro de um container rodando:

bash
docker exec -it container_id bash

Isso abre um terminal interativo dentro do container. Útil para depuração.

Docker Compose — orquestrando múltiplos containers

Docker Compose permite definir e rodar múltiplos containers com um único arquivo. Em vez de digitar cinco docker run com parâmetros diferentes, você escreve um docker-compose.yml e executa docker compose up.

O que é Docker Compose e quando usar

Docker Compose é uma ferramenta para definir aplicações multi-container. Você declara serviços, redes e volumes num arquivo YAML. Um comando sobe tudo junto.

Use Docker Compose quando sua aplicação depende de mais de um serviço, como n8n + PostgreSQL, WordPress + MySQL, API + Redis. Para um container isolado, basta o comando docker run.

Desde 2026, o Docker Compose V2 vem como plugin do Docker Engine. O comando é docker compose (sem hífen).

Exemplo: docker-compose.yml para WordPress + MySQL

yaml
version: '3.8'

services:
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: senha_segura
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html

db:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: senha_segura
MYSQL_ROOT_PASSWORD: root_senha_segura
volumes:
- db_data:/var/lib/mysql

volumes:
wp_data:
db_data:

Salve como docker-compose.yml e execute docker compose up -d no diretório. WordPress estará acessível em http://seu-vps:8080.

Comandos úteis do Compose

docker compose up -d: sobe todos os serviços em background
docker compose down: para e remove todos os serviços
docker compose logs -f: acompanha logs de todos os serviços
docker compose ps: status dos serviços definidos no arquivo

Docker Compose na prática com n8n

n8n é a plataforma de automação mais usada por devs brasileiros para integrações. Rodar n8n com Docker Compose é o padrão recomendado pela documentação oficial da n8n.

docker-compose.yml para n8n + PostgreSQL + Redis

yaml
version: '3.8'

services:
n8n:
image: n8nio/n8n:latest
restart: always
ports:
- "5678:5678"
environment:
- N8N_DATABASE_TYPE=postgresdb
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=n8n_seguro
- N8N_ENCRYPTION_KEY=chave_32_caracteres
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started

postgres:
image: postgres:15-alpine
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=n8n_seguro
- POSTGRES_DB=n8n
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n"]
interval: 10s
timeout: 5s
retries: 5

redis:
image: redis:7-alpine
restart: always
volumes:
- redis_data:/data

volumes:
n8n_data:
postgres_data:
redis_data:

Para subir: docker compose up -d. n8n estará em http://seu-vps:5678.

Comparado com n8n vs Make: open source vs cloud, o self-hosting com Docker dá controle total dos dados e workflows, sem limites de execução por plano.

Proxy reverso com Traefik (SSL automático)

Para expor n8n na porta 443 com HTTPS, adicione Traefik como proxy reverso:

yaml
traefik:
image: traefik:v3.0
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- traefik_data:/letsencrypt
command:
- "--providers.docker=true"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.leresolver.acme.tlschallenge=true"
- "[email protected]"
- "--certificatesresolvers.leresolver.acme.storage=/letsencrypt/acme.json"

volumes:
traefik_data:

E adicione labels no serviço n8n para o Traefik rotear automaticamente. O SSL via Let’s Encrypt é automático.

O template 1-click da Hostinger (e quando usar vs manual)

A Hostinger oferece um template 1-click para n8n + Docker no painel VPS. Você clica, escolhe o plano, e o servidor já vem com n8n rodando em container.

Use o template 1-click quando:

– Você quer testar n8n em minutos
– Não precisa de customizações no docker-compose
– Está começando com Docker

Use o método manual quando:

– Precisa de PostgreSQL + Redis separados
– Vai adicionar outros serviços (WordPress, API própria)
– Quer controle sobre versões e volumes

Backup do n8n: volumes e exportação de workflows

Backup de volumes Docker é simples com tar:

bash
docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine tar czf /backup/n8n_backup_$(date +%Y%m%d).tar.gz -C /data.

Para restaurar:

bash
docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine tar xzf /backup/n8n_backup_20260706.tar.gz -C /data

Além dos volumes, exporte workflows individuais pela interface do n8n (formato JSON). Isso protege contra perda de configurações específicas.

Segurança: non-root user, firewall e boas práticas

Adicionar usuário ao grupo docker

Como vimos, sudo usermod -aG docker $USER resolve o acesso sem sudo. O daemon do Docker continua rodando como root: apenas o controle via socket é delegado.

Firewall: liberar apenas portas necessárias

No UFW do Ubuntu:

bash
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 5678/tcp # n8n (se for acesso direto, sem proxy)
sudo ufw enable

Nunca libere portas de banco de dados (5432 PostgreSQL, 3306 MySQL) publicamente. Os containers de banco se comunicam via rede interna do Docker.

Docker rootless mode (para quem precisa de mais segurança)

O modo rootless do Docker roda o daemon sem privilégios de root. Oferece isolamento extra, mas tem limitações: portas abaixo de 1024 não funcionam diretamente e montagens de volume podem exigir configuração adicional. Para VPS de uso pessoal, o modo padrão com grupo docker é suficiente.

Monitoramento com docker stats

O comando nativo mais importante para VPS com recursos limitados:

bash
docker stats

Exibe em tempo real o consumo de CPU, memória, rede e disco de todos os containers. Essencial para identificar containers que estão consumindo mais do que deveriam.

Dashboard de monitoramento mostrando CPU e RAM de containers Docker rodando em VPS com recursos limitados

Monitoramento com docker stats para VPS com recursos limitados

Docker em VPS com recursos limitados (1-2 GB RAM)

Aqui está o ponto que nenhum outro guia aborda com honestidade: Docker em VPS de entrada exige planejamento.

Síndrome do Container Vazio é o erro que todo iniciante comete: instala Docker, sobe 5 containers “para testar”, e descobre que consumiu toda RAM da VPS sem rodar nada produtivo. Cada container ocupa pelo menos 50-100 MB do runtime — mesmo parado. Uma VPS de 1 GB com 8 containers rodando hello-world já está quase sem recurso.

Quantos containers cabem em 1 GB de RAM?

Depende das aplicações, mas uma estimativa realista:

– n8n + PostgreSQL + Redis: ~400-600 MB
– WordPress + MySQL: ~350-500 MB
– Nginx estático: ~30-50 MB
– Traefik: ~50-80 MB

Com 1 GB de RAM, você roda confortavelmente 2-3 serviços essenciais. Com 2 GB, sobe para 4-5. Nunca suba um container “só pra ver o que acontece”: ele vai consumir memória que poderia estar disponível para serviços produtivos.

Imagens Alpine vs Ubuntu (a Regra do Dockerfile Magro)

Imagens Alpine (5 MB) contra Ubuntu (80 MB+): para cada container, a escolha da imagem base define consumo de disco e RAM. Sempre prefira variantes -alpine ou -slim sempre que possível:

node:18-alpine em vez de node:18 (economia de ~700 MB)
postgres:15-alpine em vez de postgres:15 (economia de ~200 MB)
python:3.11-slim em vez de python:3.11 (economia de ~500 MB)

A diferença acumulada em 4 containers pode ser de 1-2 GB de disco e centenas de MB de RAM.

docker compose profiles para ambientes dev/prod

Use perfis do Compose para separar serviços de desenvolvimento dos de produção:

yaml
services:
n8n:
image: n8nio/n8n:latest
profiles: ["prod", "dev"]

mailpit:
image: axllent/mailpit
profiles: ["dev"] # só sobe em desenvolvimento

bash
# Produção (só n8n)
docker compose --profile prod up -d

# Desenvolvimento (n8n + ferramentas auxiliares)
docker compose --profile dev up -d

Isso evita containers de desenvolvimento ocupando RAM em produção.

Quando evitar Docker no VPS

Docker não é bala de prata. Há cenários onde ele adiciona complexidade sem benefício real:

Um único serviço simples: uma API Node.js que poderia rodar nativa com PM2. Docker adiciona uma camada de configuração e manutenção que não compensa.
VPS com menos de 1 GB RAM: o runtime do Docker + containerd + networking consome recursos fixos. Uma aplicação rodando nativa num Alpine direto ocuparia menos.
Aplicações que exigem acesso direto a hardware: GPU, dispositivos USB, acesso raw a disco. Docker abstrai o hardware e adiciona complexidade.
Equipe sem familiaridade com containers: se você (ou sua equipe) nunca usou Docker antes, o primeiro mês vai ser de aprendizado. Para projetos com prazo curto, uma alternativa gerenciada como Turbo Cloud resolve sem a curva de aprendizado.

A leitura do Runzos é honesta: Docker é uma ferramenta excelente, mas é o dev que decide onde ela faz sentido, não o contrário.

FAQ

O que é Docker Compose e para que serve?

Docker Compose é uma ferramenta para definir e rodar múltiplos containers com um único arquivo de configuração YAML. Você declara serviços, redes e volumes, e um comando (docker compose up) sobe tudo. Serve para aplicações multi-container como n8n + PostgreSQL, WordPress + MySQL, ou API + Redis + fila.

Como instalar Docker no Ubuntu?

Adicione o repositório oficial do Docker, instale os pacotes docker-ce docker-ce-cli containerd.io docker-compose-plugin com apt, e adicione seu usuário ao grupo docker para rodar comandos sem sudo. O passo a passo completo está na seção de instalação acima, com comandos para copiar e colar.

Docker funciona em qualquer VPS?

Docker funciona em qualquer VPS com Linux (kernel 3.10+). A grande maioria dos provedores suporta, como Hostinger, DigitalOcean, Hetzner, Turbo Cloud. VPS com Windows Server não rodam Docker nativamente (precisa de WSL2 ou VM Linux).

Qual a diferença entre container e VM?

Container compartilha o kernel do sistema hospedeiro e roda só a aplicação: inicializa em segundos e ocupa menos recursos. VM tem kernel próprio, sistema operacional completo e hypervisor; inicializa em minutos e ocupa mais RAM e disco. Container isola processos; VM isola o sistema inteiro.

Como rodar n8n com Docker?

Use o docker-compose.yml da seção acima com n8n + PostgreSQL + Redis. Execute docker compose up -d no diretório do arquivo. n8n estará disponível na porta 5678. Para SSL automático, adicione Traefik como proxy reverso.

Docker Compose em produção é seguro?

Sim, desde que você feche os gaps operacionais: faça backup regular dos volumes, use imagem pinning (versão específica, nunca :latest em produção), configure health checks, e monitore recursos com docker stats. Não exponha portas de banco de dados publicamente.

Como fazer backup de containers Docker?

Use o comando com tar para compactar volumes: docker run --rm -v volume_name:/data -v $(pwd):/backup alpine tar czf /backup/backup.tar.gz -C /data.. Para restore, inverta o tar. Para dados do n8n, exporte workflows individuais em JSON pela interface.

Conclusão

Docker transformou a forma como aplicações são empacotadas e distribuídas. Para o dev brasileiro com VPS, dominar containers significa previsibilidade — o que roda na sua máquina roda no servidor, sem surpresas de dependência.

Comece com um serviço por vez. Use imagens Alpine para economizar recursos. Monitore com docker stats. E lembre-se da Síndrome do Container Vazio: cada container a mais consome memória que você pode não ter sobrando.

Se você ainda não tem uma VPS para começar, a Hostinger oferece planos VPS a partir de R$ 29,90/mês com template 1-click para Docker e n8n. Use o cupom para 10% de desconto.

Para quem prefere não gerenciar containers, Turbo Cloud é a alternativa gerenciada, ideal para WordPress sem preocupação com manutenção de servidor.

DockerDocker ComposeHostingern8nUbuntuVPS

Compartilhe:

Leia também