VPS com Docker: Como Criar e Gerenciar Containers no Seu Servidor

65d61265-c47b-4f66-aea3-323dd8968826

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
  • -d roda em background (detached)
  • -p 80:80 mapeia a porta 80 do host para a porta 80 do container
  • --name meu-nginx dá 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 stats mostra uso de CPU, memória e rede em tempo real
  • docker events registra 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.

Compartilhe

Facebook
WhatsApp
Email
LinkedIn

Redes Sociais

Mais Populares

Receba as Últimas Novidades

Inscreva em Nossa Newsletter Semanal

Não realizamos spam, apenas novidades sobre produtos, dicas e tutoriais do universo online.

Categorias

Fique Ligado

Posts Relacionados