- Por Que Usar Docker em um VPS?
- Pré-requisitos Antes de Começar
- Instalando o Docker no VPS
- Conceitos Fundamentais
- Criando e Gerenciando Containers
- Docker Compose: Gerenciando Múltiplos Containers
- Boas Práticas de Segurança e Manutenção
- Proxy Reverso com Nginx ou Traefik
- Monitoramento Básico
- Escolhendo o VPS Certo para Docker
- Perguntas Frequentes
Se você já tentou replicar um ambiente de desenvolvimento em produção e passou horas depurando diferenças de configuração, Docker provavelmente já está na sua lista de soluções. Rodando em um VPS, ele deixa de ser uma conveniência e passa a ser a base de uma infraestrutura previsível, portátil e fácil de escalar.
Este guia cobre o essencial para instalar Docker em um VPS Linux, criar containers, gerenciar imagens e manter tudo funcionando de forma estável.
Por Que Usar Docker em um VPS?
Hospedagem compartilhada tem limites claros. Quando um projeto cresce, você começa a esbarrar em restrições de CPU, memória e isolamento de processos. Um VPS resolve isso, mas ainda assim você precisa lidar com dependências, versões de runtime e conflitos entre aplicações no mesmo servidor.
Docker resolve esse problema empacotando cada aplicação com tudo que ela precisa para rodar: sistema de arquivos, bibliotecas, variáveis de ambiente. Cada container é isolado, mas compartilha o kernel do host, o que o torna muito mais leve do que uma máquina virtual completa.
Para desenvolvedores e agências gerenciando múltiplos projetos, isso significa:
- Ambientes idênticos entre desenvolvimento, staging e produção
- Deploys mais rápidos sem o risco do "funciona na minha máquina"
- Múltiplas versões de PHP, Node.js ou Python rodando no mesmo servidor sem conflito
- Rollback simples em caso de falha
Pré-requisitos Antes de Começar
Você vai precisar de:
- Um VPS com acesso root via SSH (Ubuntu 22.04 ou Debian 12 são as opções mais comuns e bem documentadas)
- Pelo menos 1 GB de RAM — embora 2 GB seja o mínimo prático para projetos reais
- Conexão SSH configurada com chave pública, não apenas senha
Se você ainda não tem um VPS, a Napoleon oferece planos com armazenamento NVMe e datacenters no Brasil e nos EUA, o que faz diferença real em latência e performance para aplicações voltadas ao público brasileiro.
Instalando o Docker no VPS
Evite instalar o Docker pelo repositório padrão do sistema operacional. A versão disponível via apt costuma estar desatualizada. Use o repositório oficial.
Passo 1: Atualize o sistema e instale dependências
sudo apt update && sudo apt upgrade -y
sudo apt install ca-certificates curl gnupg lsb-release -y
Passo 2: Adicione a chave GPG e o repositório oficial
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
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
Passo 3: Instale o Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Passo 4: Verifique a instalação
sudo docker run hello-world
Se aparecer a mensagem de boas-vindas do Docker, está tudo certo.
Passo 5: Adicione seu usuário ao grupo docker (opcional, mas recomendado)
Isso evita precisar de sudo em cada comando Docker:
sudo usermod -aG docker $USER
newgrp docker
Conceitos Fundamentais
Antes de criar containers de verdade, vale fixar três conceitos:
Imagem: O modelo imutável a partir do qual containers são criados. Pense como um snapshot do sistema de arquivos mais metadados de configuração.
Container: Uma instância em execução de uma imagem. Você pode rodar vários containers a partir da mesma imagem simultaneamente.
Volume: O mecanismo para persistir dados fora do ciclo de vida do container. Sem volumes, tudo que você escreve dentro de um container desaparece quando ele é removido.
Criando e Gerenciando Containers
Rodando seu primeiro container real
Um exemplo prático: subir um servidor Nginx para servir arquivos estáticos.
docker run -d -p 80:80 --name meu-nginx nginx
-droda em background (detached)-p 80:80mapeia a porta 80 do host para a porta 80 do container--name meu-nginxdá um nome legível ao container
Acesse o IP do seu VPS no navegador e você verá a página padrão do Nginx.
Comandos essenciais de gerenciamento
# Listar containers em execução
docker ps
# Listar todos os containers (incluindo parados)
docker ps -a
# Parar um container
docker stop meu-nginx
# Remover um container
docker rm meu-nginx
# Ver logs de um container
docker logs meu-nginx
# Acessar o shell de um container em execução
docker exec -it meu-nginx bash
Usando volumes para persistir dados
Se você está rodando um banco de dados como MySQL ou PostgreSQL, volumes não são opcionais. Sem eles, todos os dados somem quando o container for removido ou atualizado.
docker run -d \
--name meu-postgres \
-e POSTGRES_PASSWORD=senhasegura \
-v postgres_data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:16
O volume postgres_data fica gerenciado pelo Docker e persiste entre reinicializações do container.
Docker Compose: Gerenciando Múltiplos Containers
Na maioria dos projetos reais, você vai ter mais de um container rodando: aplicação, banco de dados, cache, proxy reverso. Gerenciar isso manualmente com docker run vira caos rápido. Docker Compose resolve isso com um arquivo YAML declarativo.
Exemplo: WordPress + MySQL
Crie um arquivo docker-compose.yml:
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
volumes:
db_data:
Suba tudo com um único comando:
docker compose up -d
Para parar:
docker compose down
Para parar e remover volumes (cuidado: apaga os dados):
docker compose down -v
Boas Práticas de Segurança e Manutenção
Não rode containers como root desnecessariamente
Containers que rodam como root têm potencial de escalar privilégios se houver uma vulnerabilidade. Use a diretiva USER no Dockerfile ou a opção --user no docker run.
Mantenha imagens atualizadas
Imagens desatualizadas acumulam vulnerabilidades conhecidas. Estabeleça uma rotina de atualizar imagens base e reconstruir seus containers periodicamente:
docker pull nginx:latest
docker compose pull
docker compose up -d
Limite recursos por container
Em um VPS com múltiplos containers, um processo descontrolado pode consumir toda a memória do servidor. Use flags de limite:
docker run -d \
--memory="512m" \
--cpus="0.5" \
--name app-limitada \
minha-imagem
Limpeza periódica
Imagens, containers parados e volumes não utilizados acumulam espaço em disco com o tempo:
docker system prune -a
Use com cautela em produção. O flag -a remove todas as imagens não utilizadas por containers em execução.
Proxy Reverso com Nginx ou Traefik
Quando você tem vários containers rodando em portas diferentes, um proxy reverso organiza o tráfego por domínio ou caminho. O Traefik é especialmente popular em ambientes Docker porque se integra automaticamente via labels no docker-compose.yml, sem precisar editar arquivos de configuração a cada novo serviço.
Para projetos menores, um container Nginx configurado manualmente com proxy_pass funciona bem e é mais simples de entender.
Monitoramento Básico
Sem monitoramento, você só descobre que um container caiu quando um cliente reclama. Algumas opções diretas:
docker statsmostra uso de CPU, memória e rede em tempo realdocker eventsregistra eventos do daemon Docker- Para algo mais visual, o Portainer oferece uma interface web para gerenciar containers, imagens e volumes diretamente no navegador
Escolhendo o VPS Certo para Docker
Docker em produção precisa de recursos dedicados. Hospedagem compartilhada não é compatível com o modelo de containers, e armazenamento lento impacta diretamente o tempo de build e a performance de I/O.
Os pontos que realmente importam para workloads com Docker: CPU dedicada, armazenamento NVMe para operações de leitura e escrita rápidas, e acesso root completo para instalar e configurar o daemon sem restrições.
Se seus projetos atendem usuários no Brasil, um datacenter local também reduz latência de forma perceptível. A Napoleon oferece VPS com NVMe e infraestrutura no Brasil, com suporte via WhatsApp e Telegram disponível 24 horas — útil quando você precisa resolver um problema de servidor fora do horário comercial.
Perguntas Frequentes
Docker funciona em qualquer VPS Linux?
Sim, desde que o VPS use um kernel Linux com suporte a namespaces e cgroups, o que é padrão em qualquer distribuição moderna como Ubuntu 22.04 ou Debian 12. Você precisa de acesso root para instalar e executar o daemon Docker.
Qual a diferença entre Docker e uma máquina virtual?
Uma máquina virtual emula hardware completo e roda um sistema operacional próprio. Docker compartilha o kernel do host e isola processos via namespaces, o que o torna muito mais leve em memória e mais rápido para iniciar.
Preciso de muita RAM para rodar Docker em produção?
Depende das aplicações. O Docker em si consome pouco, mas cada container precisa de memória para rodar. Para um stack típico com aplicação web, banco de dados e cache, 2 GB é o mínimo prático. Para múltiplos stacks ou projetos maiores, 4 GB ou mais é o recomendado.
Como faço backup dos dados dos containers?
Dados persistidos em volumes Docker podem ser copiados com docker run --rm -v nome_volume:/data -v $(pwd):/backup ubuntu tar czf /backup/backup.tar.gz /data. Para bancos de dados, prefira usar as ferramentas nativas de dump — mysqldump ou pg_dump — dentro do próprio container.
Docker Compose e Docker Swarm são a mesma coisa?
Não. Docker Compose orquestra containers em um único host, ideal para desenvolvimento e projetos de menor escala. Docker Swarm orquestra containers em múltiplos servidores. Para escala maior ainda, Kubernetes é a opção mais comum em produção.
Posso rodar múltiplos sites em containers no mesmo VPS?
Sim. Cada site fica em seu próprio container (ou conjunto de containers via Compose), e um proxy reverso como Nginx ou Traefik distribui o tráfego pelo domínio. É uma das configurações mais comuns para agências que gerenciam múltiplos clientes em um único servidor.
O que acontece com meus containers se o VPS reiniciar?
Por padrão, containers não sobem automaticamente após uma reinicialização. Use a política --restart unless-stopped no docker run ou restart: unless-stopped no Compose para garantir que voltem automaticamente depois de um reboot.
Docker em um VPS é uma das combinações mais práticas para quem gerencia múltiplos projetos ou quer consistência entre ambientes. A curva de aprendizado inicial vale o investimento: depois que você entende imagens, containers e volumes, o processo de deploy e manutenção fica significativamente mais previsível.
Se você ainda está avaliando qual VPS usar como base para essa infraestrutura, veja as opções disponíveis em napoleon.com.br.



