Começando com Docker em um VPS
Escrito pela equipe ApexVPS • Última atualização: julho de 2026 • 8 min de leitura
Executar Docker em um VPS é a maneira mais rápida de ir de uma máquina Ubuntu vazia para um aplicativo web, banco de dados ou serviço self-hosted em minutos. Em vez de lidar com pacotes do sistema e dependências conflitantes, você puxa uma imagem pré-construída e inicia um contêiner. Este guia para iniciantes orienta você na instalação do Docker e Docker Compose no Ubuntu ou Debian, os conceitos essenciais, inicializando seu primeiro contêiner, persistindo dados com volumes e alguns fundamentos de segurança para você não se dar mal.
Por que executar Docker em um VPS?
Uma VPS dá acesso root completo e recursos dedicados, exatamente o que containers precisam. Com o Docker instalado, você pode executar vários serviços isolados lado a lado sem que interfiram entre si. Cada container vem com suas próprias bibliotecas, então um app Node.js, um banco de dados Postgres e um proxy reverso podem coexistir em uma máquina de forma limpa. Se o seu objetivo é hospedar apps em uma VPS — como uma nuvem pessoal, um wiki ou um servidor de mídia — o Docker mantém cada serviço organizado e reprodutível.
Containers também são portáveis. O mesmo arquivo Compose que roda no seu laptop roda no servidor, o que elimina o clássico problema 'funciona na minha máquina'. Reconstruir um serviço após um erro leva segundos, não uma tarde inteira reinstalando pacotes.
Conceitos básicos em linguagem simples
Antes de mexer no terminal, é útil conhecer quatro blocos de construção:
- Imagem — um template somente leitura que contém um aplicativo e tudo o que ele precisa para rodar. Você baixa imagens de um registro como o Docker Hub. Pense nisso como um snapshot ou uma classe.
- Container — uma instância em execução de uma imagem. Você pode iniciar, parar e excluir containers livremente. Vários containers podem ser executados a partir da mesma imagem, como objetos criados a partir de uma classe.
- Volume — armazenamento persistente que fica fora da camada gravável de um container. Volumes são a forma de manter bancos de dados e arquivos enviados seguros quando um container é substituído.
- Rede — uma rede virtual que permite que containers se comuniquem entre si pelo nome. O Docker cria uma automaticamente para cada projeto Compose, para que seu app alcance o banco de dados em um hostname amigável.
Passo 1: Instale o Docker no Ubuntu ou Debian
A forma mais simples e oficialmente suportada de instalar o Docker Engine é o script de conveniência. Conecte-se ao seu servidor via SSH e execute:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Isso instala o Docker Engine junto com o plugin Compose. Quando terminar, confirme as versões:
docker --version
docker compose version
Por padrão, o Docker requer sudo. Para executá-lo como usuário normal, adicione-se ao grupo docker e faça logout e login para que a alteração tenha efeito:
sudo usermod -aG docker $USER
O Docker também inicia no boot na maioria dos sistemas. Se precisar ativá-lo manualmente:
sudo systemctl enable --now docker
Prefere o método do repositório de pacotes ou quer detalhes completos para a sua distribuição? A documentação oficial de instalação do Docker cobre todas as opções. O script de conveniência acima é ideal para uma VPS nova.
Passo 2: Execute seu primeiro container
Teste a instalação com a imagem clássica hello-world:
docker run hello-world
O Docker baixa a imagem, executa uma vez e imprime uma mensagem de confirmação. Agora vamos rodar algo que você possa ver de fato. Este comando inicia um servidor web Nginx em segundo plano e mapeia a porta 8080 do host para a porta 80 no container:
docker run -d -p 8080:80 --name web nginx
Abra http://your-server-ip:8080 no navegador e você deve ver a página de boas-vindas do Nginx. Alguns flags que valem a pena conhecer:
-dexecuta o container em segundo plano (modo destacado).-p 8080:80publica uma porta comohost:container.--name webdá um nome memorável ao container.
Verifique o que está rodando e, em seguida, pare e remova o container quando terminar:
docker ps
docker stop web
docker rm web
Alguns comandos cobrem a maior parte do trabalho diário. docker images lista as imagens que você baixou, docker logs web mostra a saída de um container para solução de problemas e docker exec -it web bash abre um shell dentro de um container em execução para você explorar. Aprender esses cinco ou seis comandos é suficiente para gerenciar um servidor pequeno com confiança; o resto você consulta conforme a necessidade.
Passo 3: Use Docker Compose para apps com múltiplos containers
Digitar comandos longos docker run cansa rápido. O Docker Compose permite descrever toda a sua stack em um único arquivo e iniciá-la com um comando. Crie um arquivo chamado compose.yaml:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- web-data:/usr/share/nginx/html
restart: unless-stopped
volumes:
web-data:
No mesmo diretório, inicie tudo em segundo plano:
docker compose up -d
O Compose cria a rede, o volume nomeado e o container para você. Companheiros úteis:
docker compose ps
docker compose logs -f
docker compose down
A política restart: unless-stopped faz com que o serviço volte automaticamente após uma reinicialização ou falha — útil para um servidor que você não está monitorando o tempo todo.
Passo 4: Persista dados com volumes
Esta é a parte que os iniciantes mais erram. Qualquer coisa escrita no sistema de arquivos de um container desaparece quando ele é removido ou recriado. Para manter dados, coloque-os em um volume. Existem duas abordagens comuns:
- Volumes nomeados — gerenciados pelo Docker, ideais para bancos de dados. O exemplo do Compose acima usa um chamado
web-data. - Bind mounts — mapeiam uma pasta do host diretamente para o container, por exemplo
./config:/etc/app. Ótimos para arquivos de configuração que você quer editar manualmente.
Inspecione e gerencie volumes pela linha de comando:
docker volume ls
docker volume inspect web-data
Desde que seus caminhos importantes apontem para um volume, você pode excluir e reconstruir containers o dia todo sem perder um byte. Faça backup do diretório do volume como parte dos backups do seu servidor.
Passo 5: Atualize imagens e containers
Imagens de containers recebem atualizações de segurança e recursos como qualquer software. Atualizar uma stack do Compose é uma rotina em duas etapas: puxe as imagens mais novas e recrie os containers.
docker compose pull
docker compose up -d
Como seus dados vivem em volumes, a recriação é segura. Com o tempo, imagens não utilizadas se acumulam e ocupam espaço em disco. Limpe-as ocasionalmente:
docker image prune
Fixe em tags de versão específicas (por exemplo postgres:16 em vez de latest) quando quiser atualizações previsíveis e repetíveis, em vez de surpresas.
Segurança básica de Docker para iniciantes
Containers são convenientes, mas não são uma fronteira de segurança mágica. Alguns hábitos evitam problemas:
- Execute apenas imagens em que você confia. Prefira imagens oficiais ou de editores conhecidos. Não execute uma imagem aleatória como root só porque um tutorial mandou — uma imagem não confiável roda código no seu servidor.
- Remova o root nos containers. Muitas imagens oficiais suportam um usuário não-root, ou você pode definir um com a instrução
USERem um Dockerfile. Rodar como usuário limitado reduz o raio de impacto se um aplicativo for comprometido. - Publique apenas as portas necessárias. Cada flag
-pabre uma porta para a internet. Mantenha bancos de dados na rede interna do Docker e exponha apenas o front-end web. - Mantenha o host atualizado. A segurança do Docker começa com um servidor seguro. Rode
sudo apt update && sudo apt upgraderegularmente e proteja o SSH.
Antes de expor qualquer coisa publicamente, confira nossa checklist complementar sobre como proteger seu VPS nos primeiros 10 minutos — ela cobre chaves SSH, firewall e atualizações automáticas, que combinam perfeitamente com um host Docker.
Escolhendo um VPS pronto para Docker
O Docker funciona até em hardware modesto, mas recursos dedicados fazem diferença real quando você empilha vários containers. Hospedagem compartilhada e supersignificada significa que um vizinho barulhento pode sufocar seu banco de dados no pior momento. A ApexVPS oferece vCPU verdadeiramente dedicada, armazenamento NVMe SSD e acesso root total, então seus containers têm o desempenho pelo qual você pagou. Todo plano suporta Ubuntu, Debian e outras distribuições populares, e você pode adicionar sua chave SSH na inscrição.
O checkout é somente em cripto via OxaPay, aceitando Bitcoin, Ethereum, USDT e mais de 30 criptomoedas — sem cartão de crédito, sem conta bancária e sem KYC. Você fornece um e-mail para receber os dados de acesso, e só. Compare as especificações e regiões na página de preços da ApexVPS para encontrar um plano adequado para sua carga de trabalho de contêiner.
Perguntas frequentes
Preciso de muita RAM para rodar Docker em uma VPS?
Não. O Docker em si é leve e adiciona pouca sobrecarga. Um ou dois contêineres rodam confortavelmente com 2 GB de RAM, enquanto 4 GB ou mais dá margem para bancos de dados e vários serviços ao mesmo tempo.
É docker-compose ou docker compose?
Em uma instalação moderna, o Compose vem como plugin, então o comando é docker compose com um espaço. O binário antigo e independente docker-compose ainda funciona, mas está sendo descontinuado — use a versão plugin em uma configuração nova.
Onde meus dados são armazenados quando um contêiner é excluído?
Qualquer coisa escrita dentro do contêiner é perdida na remoção. Armazene dados importantes em um volume nomeado ou bind mount para que sobrevivam à recriação do contêiner. É assim que bancos de dados e uploads permanecem seguros.
Posso pagar por uma VPS pronta para Docker com criptomoeda?
Sim. O checkout da ApexVPS é somente em cripto via OxaPay e aceita Bitcoin, Ethereum, USDT e mais de 30 moedas. O cadastro precisa apenas de um e-mail, sem cartão de crédito e sem verificação de identidade.