Docker em VPS: Seu Deploy Autônomo em Servidor (Do Zero à Produção)

10 min 1 Docker

O Que São Containers Docker e Por Que Hospedá-los em um VPS?

Containers Docker são unidades isoladas de software que empacotam código e todas as suas dependências, garantindo que a aplicação funcione em qualquer ambiente. Hospedar o Docker em um Servidor Virtual Privado (VPS) oferece controle total, personalização e potencial economia em comparação com plataformas gerenciadas.

Na Host You Secure, vemos muitos clientes migrando para o Docker para otimizar seus processos de DevOps e agilizar o deploy. A escolha de um VPS para hospedar seus containers é estratégica: você não fica preso a fornecedores específicos, pode customizar o ambiente ao seu gosto e, com os planos certos, ainda economiza. Este guia foca em como colocar seu ambiente Docker rodando em um VPS Linux, especificamente Ubuntu, que é uma escolha popular e robusta.

Benefícios de Rodar Docker em um VPS

  • Controle Total: Você gerencia o sistema operacional, as configurações de rede e os recursos do servidor.
  • Flexibilidade: Instale qualquer versão do Docker ou ferramentas de orquestração como Docker Compose.
  • Custo-Benefício: VPS são geralmente mais econômicos para cargas de trabalho consistentes do que soluções PaaS.
  • Isolamento: Cada container roda em seu próprio ambiente, prevenindo conflitos de dependência.
  • Portabilidade: Aplicações containerizadas funcionam da mesma forma em desenvolvimento, staging e produção.

Requisitos de Servidor para Docker em Produção

Para um ambiente Docker produtivo, um servidor VPS robusto é essencial. A quantidade de recursos dependerá da complexidade e do volume de suas aplicações, mas como ponto de partida:

  • CPU: Mínimo de 2 vCPUs para aplicações leves. Para cargas mais pesadas ou múltiplos containers, 4+ vCPUs são recomendados.
  • RAM: Comece com 2GB para experimentos e aplicações simples. Para produção, 4GB é um bom ponto de partida, mas 8GB ou mais pode ser necessário dependendo do consumo dos seus containers.
  • Armazenamento: Um SSD de pelo menos 40GB é recomendado para o sistema operacional e o Docker. O espaço adicional dependerá do tamanho das imagens e dos volumes de dados gerados pelas suas aplicações. Um SSD oferece performance superior para I/O intensivo.

Em minha experiência ajudando clientes na Host You Secure, muitos subestimam o consumo de RAM, especialmente com bancos de dados ou aplicações que lidam com muitos usuários simultâneos. Sempre monitore o uso e escale conforme necessário.

Instalando o Docker em um VPS Ubuntu: Passo a Passo Detalhado

Vamos instalar o Docker Engine na sua mais recente versão estável em um servidor Ubuntu. Este tutorial assume que você tem acesso root (ou sudo) ao seu VPS.

Passo 1: Atualizar o Sistema

Antes de instalar qualquer coisa, é crucial garantir que seu sistema esteja atualizado com os pacotes mais recentes. Execute os seguintes comandos:


sudo apt update
sudo apt upgrade -y

Passo 2: Remover Instalações Anteriores do Docker (Opcional)

Se você já tentou instalar o Docker antes, remova quaisquer versões antigas para evitar conflitos:


sudo apt remove docker docker-engine docker.io containerd runc
sudo apt autoremove -y

Passo 3: Instalar o Docker Engine

Para instalar o Docker, precisamos configurar o repositório oficial. Primeiro, instale os pacotes necessários para permitir que o `apt` use um repositório via HTTPS:


sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Agora, adicione a chave GPG oficial do Docker e configure o repositório:


curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Atualize a lista de pacotes novamente após adicionar o novo repositório e instale o Docker Engine:


sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

Após a instalação, o Docker deve iniciar automaticamente. Verifique o status:


sudo systemctl status docker

Você deverá ver uma saída indicando que o serviço está `active (running)`.

Passo 4: Adicionar seu Usuário ao Grupo Docker (Opcional, mas Recomendado)

Por padrão, para executar comandos Docker, você precisa usar `sudo`. Para evitar isso, adicione seu usuário ao grupo `docker`:


sudo usermod -aG docker $USER

Você precisará fazer logout e login novamente (ou reiniciar o servidor) para que essa alteração tenha efeito.

Passo 5: Testar a Instalação

Execute o container `hello-world` para confirmar que o Docker está funcionando corretamente:


docker run hello-world

Se tudo estiver correto, você verá uma mensagem confirmando que sua instalação está funcionando.

Docker Compose: Simplificando Deploy de Múltiplos Containers

Para aplicações que consistem em múltiplos serviços (por exemplo, uma aplicação web com um banco de dados), gerenciar cada container individualmente pode ser tedioso. O Docker Compose é uma ferramenta que permite definir e rodar aplicações Docker multi-container usando um arquivo YAML.

O que é um arquivo `docker-compose.yml`?

Este arquivo descreve os serviços, redes e volumes de sua aplicação. Ele automatiza o processo de criação e configuração dos containers.

Exemplo de `docker-compose.yml` para uma Aplicação Web Simples

Imagine que você quer rodar um servidor web Nginx e uma aplicação simples que expõe uma porta. Aqui está um exemplo de como seria o arquivo `docker-compose.yml`:


version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

  app:
    image: sua_imagem_de_app:latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://user:password@db:5432/mydatabase
    depends_on:
      - db
    restart: unless-stopped

  db:
    image: postgres:13
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydatabase
    volumes:
      - db_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    restart: unless-stopped

volumes:
  db_data:

Para usar este exemplo:

  1. Crie um diretório para seu projeto (ex: `meu-projeto-docker`).
  2. Dentro dele, crie um subdiretório `html` e coloque um arquivo `index.html` simples nele.
  3. Salve o conteúdo acima como `docker-compose.yml` no diretório raiz do seu projeto.
  4. Substitua `sua_imagem_de_app:latest` por uma imagem de container real, se estiver usando uma aplicação customizada. Para este exemplo, você pode remover o serviço `app` se não tiver uma imagem pronta.

Executando o Docker Compose

Navegue até o diretório onde você salvou o arquivo `docker-compose.yml` e execute:


docker compose up -d

O comando `up -d` criará e iniciará os containers em background. Para parar os containers, use `docker compose down`.

Erros Comuns e Soluções ao Usar Docker em VPS

Ao implementar e gerenciar Docker em um VPS, alguns desafios são recorrentes. Conhecê-los pode economizar tempo e dor de cabeça.

1. Falta de Memória (OOM Killer)

O problema: O sistema operacional (Ubuntu) mata processos (incluindo containers) quando a memória RAM se esgota. Isso é comum em VPS com recursos limitados.

Solução: Monitore o uso de memória com `docker stats` e `htop`. Se os containers consomem mais RAM do que o disponível, você precisará otimizar suas aplicações, reduzir o número de containers rodando ou, idealmente, fazer um upgrade do seu plano de VPS para um com mais RAM. Na Host You Secure, nosso plano VPS Brasil Starter (R$ 49/mês, 2GB RAM, 2 vCPUs) é um bom ponto de partida, mas para aplicações mais exigentes, planos com 4GB ou 8GB de RAM são mais adequados.

2. Problemas de Rede

O problema: Containers não conseguem se comunicar entre si ou com a internet, ou as portas expostas não estão acessíveis externamente.

Solução: Verifique as configurações de rede do Docker (`docker network ls`, `docker network inspect `). Certifique-se de que as portas estejam corretamente mapeadas no `docker-compose.yml` (ex: `8080:80` onde 8080 é a porta no host e 80 é a porta no container) e que o firewall do seu servidor (como `ufw`) permita tráfego nessas portas.

3. Permissões de Arquivo e Volume

O problema: Containers que precisam escrever em volumes montados falham devido a permissões incorretas.

Solução: Certifique-se de que o usuário dentro do container tenha permissões para acessar os diretórios montados no host. Uma abordagem comum é garantir que o UID/GID do usuário no container corresponda ao proprietário dos arquivos no host, ou usar permissões mais flexíveis (com cautela) no host. Para volumes de dados persistentes, use volumes Docker (`volumes: - db_data:/var/lib/postgresql/data`) em vez de montagens diretas de diretório (`volumes: - ./dados:/app/data`) quando possível, pois o Docker gerencia melhor as permissões nesses casos.

4. Imagens Grandes Consumindo Disco

O problema: Com o tempo, imagens antigas, caches e volumes não utilizados podem ocupar muito espaço em disco.

Solução: Use o comando `docker system prune -a` regularmente para remover imagens não utilizadas, containers parados e redes órfãs. Você pode adicionar a flag `--volumes` para remover também volumes não utilizados, mas use com cuidado, pois isso pode apagar dados persistentes.

Comparativo: Docker em VPS vs. Plataformas Gerenciadas

A decisão entre rodar Docker em um VPS autogerenciado ou usar uma plataforma como AWS ECS, Google Kubernetes Engine (GKE) ou Azure Kubernetes Service (AKS) depende das suas necessidades.

Recurso Docker em VPS (Host You Secure) Plataformas Gerenciadas (AWS, GCP, Azure)
Controle e Flexibilidade Total. Você gerencia o SO e o ambiente. Limitado. Gerenciado pelo provedor.
Complexidade de Gerenciamento Alta. Requer conhecimento de administração de sistemas e Docker. Moderada a Alta. Curva de aprendizado com a plataforma específica.
Custo Previsível e geralmente menor para cargas estáveis. Ex: VPS Brasil Starter (R$ 49/mês). Pode ser mais alto, com custos variáveis por uso (CPU, rede, armazenamento). O deploy pode parecer mais simples, mas o custo total pode surpreender.
Escalabilidade Manual ou com ferramentas de orquestração auto-hospedadas (ex: Kubernetes em VPS). Nativa e simplificada. Escalabilidade automática fácil de configurar.
Manutenção Responsabilidade sua (atualizações, segurança, backups). Compartilhada. Provedor gerencia a infraestrutura subjacente.
Setup Inicial Rápido para instalação básica do Docker. Demorado para orquestração completa. Pode ser rápido com wizards, mas complexo para customizações profundas.

Para quem está começando ou tem aplicações mais simples, rodar Docker em um VPS com Docker Compose é uma excelente forma de dar os primeiros passos em DevOps e deploy de containers sem a complexidade e o custo inicial de plataformas gerenciadas. A Host You Secure oferece a infraestrutura necessária para você ter autonomia.

Perguntas Relacionadas

O Docker exige um sistema operacional específico?

O Docker roda nativamente no Linux. Para Windows e macOS, ele utiliza máquinas virtuais para criar um ambiente Linux onde os containers rodam. Portanto, em um VPS Linux, a instalação é direta e mais performática.

Qual a diferença entre Docker e VM?

Máquinas Virtuais (VMs) virtualizam o hardware, rodando um sistema operacional completo para cada instância. Já os containers Docker compartilham o kernel do sistema operacional do host, sendo muito mais leves e rápidos para iniciar.

Como faço backup dos meus containers Docker?

O backup de containers envolve salvar os dados persistentes (volumes) e, opcionalmente, o estado dos containers. Para volumes, você pode fazer cópias dos diretórios montados ou usar comandos `docker cp` para extrair dados. Ferramentas de orquestração também oferecem mecanismos de backup.

É seguro rodar Docker em um VPS público?

Sim, desde que configurado corretamente. O isolamento dos containers é forte, mas é crucial manter o host atualizado, configurar firewalls e usar redes seguras. Evite expor portas desnecessariamente e utilize credenciais fortes.

Conclusão: Assuma o Controle do Seu Deploy com Docker em VPS

Hospedar o Docker em um VPS oferece uma combinação poderosa de controle, flexibilidade e custo-benefício para suas necessidades de deploy e DevOps. Desde a instalação básica até a orquestração com Docker Compose, você pode construir um ambiente robusto e adaptado às suas aplicações.

Lembre-se que um bom servidor é a base para o sucesso. Para quem busca iniciar ou escalar seus projetos Docker, recomendamos o plano VPS Brasil Starter da Host You Secure. Com 2GB de RAM e 2 vCPUs por R$ 49/mês, ele oferece a performance e a confiabilidade necessárias para rodar seus containers com eficiência. Nós rodamos esse exato setup de Docker em um VPS Brasil Starter para nossos clientes, garantindo uma experiência otimizada.

Comece hoje a ter autonomia total sobre seu ambiente de containers. Explore nossos planos e dê o próximo passo no seu deploy!

Descubra o plano ideal para seu projeto Docker agora!

Leia também: Confira nossos guias de Docker

Perguntas Frequentes

Para testes e aplicações muito simples, 2GB de RAM podem ser suficientes. No entanto, para um ambiente de produção estável, especialmente com múltiplos containers ou aplicações que consomem mais recursos (como bancos de dados), recomendamos um mínimo de 4GB de RAM. O plano VPS Brasil Starter da Host You Secure, com 2GB, é um ótimo ponto de partida para aprendizado e pequenos projetos.

Por padrão, o Docker cria uma rede bridge que permite aos containers acessar a internet. Se você encontrar problemas, verifique se o firewall do seu VPS (como `ufw`) está configurado para permitir o tráfego de saída dos IPs associados aos containers ou do próprio host. Comandos como `docker network inspect bridge` podem ajudar a diagnosticar.

Não é recomendado rodar múltiplas versões do Docker Engine no mesmo sistema operacional. A instalação oficial do Docker Engine é projetada para ser única. Se precisar testar novas versões, a abordagem mais segura é usar um novo VPS ou um ambiente de teste isolado.

Sim, se o servidor VPS onde o Docker está instalado cair, todos os containers rodando nele também pararão. Para alta disponibilidade, você precisaria de múltiplos servidores, balanceamento de carga e ferramentas de orquestração como Kubernetes, ou configurar o `restart: unless-stopped` ou `restart: always` no Docker Compose para que os containers reiniciem automaticamente quando o serviço Docker voltar a funcionar após uma queda ou reinicialização do servidor.

Você faz isso mapeando uma porta do seu VPS para a porta do container usando a diretiva `ports` no seu arquivo `docker-compose.yml`. Por exemplo, `ports: - "80:8080"` fará com que o tráfego que chega na porta 80 do seu VPS seja direcionado para a porta 8080 dentro do container. Certifique-se de que a porta do VPS esteja aberta no firewall.

Uma imagem Docker é um modelo somente leitura que contém as instruções para criar um container. É como uma classe em programação orientada a objetos. Um container Docker é uma instância executável de uma imagem. É como um objeto criado a partir de uma classe, com seu próprio sistema de arquivos, rede e processos isolados.

Não é estritamente necessário. Você pode gerenciar containers individuais com comandos `docker run`. No entanto, para qualquer aplicação que envolva mais de um serviço (como um servidor web e um banco de dados), o Docker Compose simplifica drasticamente a definição, configuração e o gerenciamento de todos os containers como uma única unidade, sendo altamente recomendado para produção.

O consumo de disco de um container varia enormemente. A imagem base pode ter dezenas ou centenas de megabytes. As modificações feitas durante a execução (logs, dados gerados) são adicionadas como 'camadas' sobre a imagem base. Além disso, os volumes persistentes podem consumir gigabytes, dependendo da aplicação. É comum que imagens e volumes somados ocupem de centenas de MB a vários GB por aplicação.

Comentários (0)

Ainda não há comentários. Seja o primeiro!