Como Instalar Docker e Docker Compose em VPS Linux

9 min de leitura Docker
Como Instalar Docker e Docker Compose em VPS Linux

A instalação do Docker e do Docker Compose em uma VPS Linux é um dos primeiros passos fundamentais para qualquer profissional de TI, desenvolvedor backend ou especialista em DevOps que deseja modernizar sua infraestrutura. A containerização não apenas padroniza o ambiente de desenvolvimento e produção, mas também simplifica drasticamente o gerenciamento de dependências, escalabilidade e portabilidade das aplicações. Neste tutorial técnico completo, você aprenderá como realizar a instalação oficial do Docker Engine e configurar o Docker Compose em uma VPS com sistema operacional baseado em Debian ou Ubuntu (como Ubuntu 20.04/22.04 LTS ou Debian 11/12), que são as distribuições mais comuns para servidores web e aplicações modernas.

Pré-requisitos e Preparação do Sistema

Antes de iniciarmos a instalação propriamente dita, é crucial garantir que o ambiente esteja limpo e atualizado. Uma VPS recém-provisionada pode conter pacotes antigos ou configurações conflitantes de repositórios de software. O primeiro passo lógico é atualizar o índice de pacotes do gerenciador de software apt para garantir que baixemos as versões mais recentes disponíveis nos repositórios oficiais.

sudo apt update
sudo apt upgrade -y

Em seguida, devemos instalar os pacotes necessários para permitir que o apt use um repositório via HTTPS. Por padrão, a maioria das instalações Linux não vem com esses utilitários de segurança e transporte configurados. Execute o comando abaixo para instalar as dependências básicas:

sudo apt-get install ca-certificates curl gnupg lsb-release -y

Esses pacotes são essenciais para validar a integridade das chaves GPG do repositório oficial do Docker e garantir que a comunicação entre sua VPS e o repositório seja segura.

Configuração do Repositório Oficial do Docker

A instalação mais recomendada pela documentação oficial é utilizar os repositórios oficiais do Docker, em vez de confiar na versão disponível nos repositórios padrão do sistema operacional. Isso garante que você tenha acesso às últimas correções de segurança e funcionalidades do Docker Engine.

O primeiro passo neste processo é adicionar a chave GPG oficial do Docker ao seu sistema. Essa chave é usada para verificar a autenticidade dos pacotes baixados. Execute o seguinte comando:

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
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Com a chave segura instalada, precisamos configurar o repositório de software. O Docker oferece scripts auxiliares para automatizar essa tarefa, identificando automaticamente sua distribuição e arquitetura (x86_64, arm64, etc.). Execute:

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

Agora que o repositório está configurado, atualize o índice de pacotes novamente para incluir os novos repositórios adicionados:

sudo apt update

Instalação do Docker Engine

Com o ambiente preparado, estamos prontos para instalar o pacote principal. O nome correto do pacote no novo repositório é docker-ce (Community Edition). Evite instalar apenas docker.io, pois essa versão vem dos repositórios padrão do Ubuntu/Debian e geralmente está desatualizada ou não recebe as mesmas atualizações de segurança.

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

Neste comando, instalamos não apenas o motor do Docker (docker-ce), mas também a linha de comando (docker-ce-cli), o gerenciador de contêineres de baixo nível (containerd.io) e os plugins essenciais para construção de imagens e execução de compostos. A opção -y confirma automaticamente a instalação, facilitando scripts automatizados.

Após a conclusão da instalação, o serviço do Docker não inicia imediatamente em algumas configurações padrão. Você pode verificar o status do serviço utilizando:

sudo systemctl status docker

Se o status indicar inactive ou dead, inicie o serviço manualmente:

sudo systemctl start docker

Para garantir que o Docker inicie automaticamente sempre que a VPS for reiniciada, habilite o serviço:

sudo systemctl enable docker

Verificação da Instalação e Permissões de Usuário

Uma verificação rápida pode ser feita executando a imagem hello-world. Isso baixa uma imagem mínima do Docker Hub e executa um contêiner que imprime uma mensagem de sucesso:

sudo docker run hello-world

Se você vir uma mensagem indicando que sua instalação parece estar funcionando corretamente, a parte técnica está completa. No entanto, há um ponto crítico para a produtividade: o gerenciamento de permissões.

Por padrão, o Docker cria um grupo chamado docker. Apenas usuários pertencentes a esse grupo (e o root) podem executar comandos do Docker sem precisar usar o sudo. Executar sudo docker em todos os seus scripts de deploy e desenvolvimento pode ser tedioso e aumentar riscos de segurança acidental. Para resolver isso, adicione seu usuário atual ao grupo docker:

sudo usermod -aG docker $USER

Após executar este comando, você precisará sair do seu terminal e fazer login novamente (ou usar o comando newgrp docker) para que as novas permissões sejam aplicadas à sua sessão atual. Teste a configuração executando um comando sem sudo:

docker ps

Se o comando retornar uma lista vazia de contêineres em execução (sem erro de permissão), suas configurações estão perfeitas.

Docker Compose: Orquestração Simplificada

O Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-contêiner. Ele utiliza um arquivo YAML para configurar os serviços da sua aplicação, facilitando o deploy de stacks complexas que envolvem banco de dados, cache, balanceadores de carga e a aplicação em si.

Nos passos anteriores, já instalamos o docker-compose-plugin. Isso significa que o Docker Compose está disponível como um plugin nativo do Docker. Você pode verificar a versão instalada com:

docker compose version

Nota importante: A nova sintaxe utiliza docker compose (sem hífen), em vez da versão antiga que era uma binário separado chamado docker-compose. Recomendamos o uso da nova sintaxe para compatibilidade futura.

Criando seu Primeiro Projeto com Docker Compose

Vamos criar um exemplo prático. Imagine que você deseja hospedar um servidor web simples Nginx e um banco de dados PostgreSQL, ambos gerenciados pelo Docker Compose.

  1. Crie um diretório para o projeto:
mkdir ~/meu-projeto-docker
cd ~/meu-projeto-docker
  1. Crie um arquivo chamado docker-compose.yml. Este arquivo definirá sua infraestrutura:
nano docker-compose.yml

Dentro do arquivo, insira a seguinte configuração de exemplo:

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html

  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: senha_segura_123
      POSTGRES_DB: meu_banco
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

Neste arquivo, definimos dois serviços: web, que expõe a porta 80 do contêiner para a porta 8080 da VPS, e db, que configura um banco PostgreSQL. O uso de volumes garante que os dados do banco persistam mesmo se o contêiner for removido.

Executando e Gerenciando os Contêineres

Agora, vamos iniciar a infraestrutura descrita no arquivo YAML. Use o comando up com a flag -d para rodar em modo detached (background):

docker compose up -d

O Docker irá baixar as imagens necessárias, criar os contêineres e iniciá-los. Você pode verificar se estão rodando com:

docker compose ps

Para visualizar os logs de ambos os serviços combinados, utilize:

docker compose logs -f

Se precisar parar todos os serviços definidos no arquivo, use:

docker compose down

Esta é a vantagem principal do Docker Compose: um único comando gerencia todo o ciclo de vida da sua aplicação multi-contêiner.

Otimizações e Boas Práticas para VPS

Ao operar Docker em uma VPS, considere limitações de recursos. Se sua VPS possui pouca memória RAM (ex: 512MB ou 1GB), o consumo do daemon Docker e dos contêineres pode ser significativo.

Limitando Recursos

Você pode limitar a quantidade de CPU e memória que um contêiner utiliza diretamente no docker-compose.yml:

services:
  web:
    image: nginx:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 256M

Segurança Básica

Nunca exponha portas de banco de dados diretamente na internet. No exemplo acima, a porta do PostgreSQL não foi mapeada para o host (- "8080:80" existe, mas não há - "5432:5432"). Isso impede que acessos externos tentem fazer login no banco de dados. Se sua aplicação precisar acessar o banco, ela deve fazê-lo através da rede interna do Docker (usando o nome do serviço db como hostname).

Mantendo Imagens Atualizadas

Para manter suas imagens seguras, atualize periodicamente as imagens base. O comando abaixo verifica e atualiza todas as imagens definidas no seu compose file:

docker compose pull
docker compose up -d

Conclusão

A instalação do Docker e Docker Compose em sua VPS Linux é um processo robusto que transforma a maneira como você gerencia aplicações. Ao seguir os passos de configuração dos repositórios oficiais, você garante estabilidade e segurança. O uso do docker-compose.yml padroniza seu ambiente de desenvolvimento e produção, reduzindo o clássico problema "funciona na minha máquina".

Com este conhecimento básico, você está preparado para implementar stacks mais complexas, integrar pipelines de CI/CD e explorar orquestradores como Kubernetes em ambientes escaláveis. Lembre-se sempre de monitorar o uso de recursos da sua VPS e ajustar as restrições dos contêineres conforme necessário para manter a estabilidade do servidor.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000