Passo a passo para instalar Docker no Ubuntu e no Debian pelo repositório oficial, com Docker Compose, rotação de logs e uso sem sudo.

Para que serve

Este artigo mostra como instalar Docker no Ubuntu e no Debian (Docker Engine e o plugin Docker Compose) a partir do repositório oficial da Docker, que é a forma recomendada para servidores. Os pacotes docker.io e docker-compose das distribuições costumam vir defasados, e o script de conveniência (get.docker.com) não é indicado para produção porque instala dependências sem perguntar e pode fazer saltos de versão inesperados.

Você pode seguir este roteiro direto no servidor dedicado ou, o que é mais comum em quem usa Proxmox VE, dentro de uma VM Debian ou Ubuntu criada para rodar containers.

Pré-requisitos

  • Debian 12 (Bookworm) ou 13 (Trixie), ou Ubuntu 22.04, 24.04 ou 26.04 LTS, 64 bits.
  • Acesso root ou usuário com sudo.
  • Saída para a internet (HTTPS) para baixar os pacotes.
Antes de instalar: o Docker cria regras de firewall próprias e publica portas ignorando o UFW. Leia também o artigo «Docker ignora o UFW: por que acontece e como corrigir o firewall» antes de expor qualquer serviço.
No host Proxmox: não instale o Docker diretamente no nó Proxmox VE. Ele mexe no iptables e na rede do host e pode conflitar com o firewall e as bridges do Proxmox. Use uma VM (recomendado) ou um container LXC.

Passo a passo para instalar Docker no Ubuntu e no Debian

  1. Remova pacotes antigos ou conflitantes (se existirem; o apt avisa se não houver nada para remover):
    for pkg in docker.io docker-doc docker-compose docker-buildx podman-docker containerd runc; do
      sudo apt remove -y $pkg
    done
    Imagens e volumes que estejam em /var/lib/docker não são apagados por esse comando.
  2. Instale as dependências e a chave GPG da Docker. No Debian:
    sudo apt update
    sudo apt install -y ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    No Ubuntu, troque linux/debian por linux/ubuntu na URL.
  3. Cadastre o repositório (formato deb822). No Debian:
    sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
    Types: deb
    URIs: https://download.docker.com/linux/debian
    Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
    Components: stable
    Architectures: $(dpkg --print-architecture)
    Signed-By: /etc/apt/keyrings/docker.asc
    EOF
    sudo apt update
    No Ubuntu, use URIs: https://download.docker.com/linux/ubuntu. Se o apt update reclamar de "Conflicting values set for option Signed-By", existe outro arquivo antigo da Docker em /etc/apt/sources.list.d/ (por exemplo docker.list); apague-o e rode de novo.
  4. Instale o Docker Engine e os plugins:
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  5. Habilite o serviço na inicialização (no Debian/Ubuntu ele já vem habilitado, mas confirme):
    sudo systemctl enable --now docker containerd
  6. Configure rotação de logs. Por padrão os logs dos containers crescem sem limite e podem lotar o SSD do sistema. Crie /etc/docker/daemon.json:
    {
      "log-driver": "local",
      "log-opts": {
        "max-size": "20m",
        "max-file": "5"
      }
    }
    Depois: sudo systemctl restart docker. A configuração vale para containers criados a partir de agora; os existentes precisam ser recriados (docker compose up -d --force-recreate).
  7. (Opcional) Use o Docker sem sudo. Adicione seu usuário ao grupo docker e faça logout/login:
    sudo usermod -aG docker $USER
    Atenção: quem está no grupo docker tem, na prática, poder de root no servidor. Só adicione usuários de confiança.

Seu primeiro projeto com Docker Compose

O Compose agora é um plugin: o comando é docker compose (com espaço), e não mais docker-compose. Exemplo de um Nginx publicado apenas no localhost (para ficar atrás de um proxy reverso):

mkdir -p ~/apps/web && cd ~/apps/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
EOF
mkdir -p html && echo "ok" > html/index.html
docker compose up -d

Comandos do dia a dia: docker compose ps, docker compose logs -f, docker compose down (para e remove os containers, mas mantém volumes nomeados) e docker compose pull (baixa imagens novas).

Como saber se funcionou

docker version
docker compose version
sudo docker run --rm hello-world
curl -s http://127.0.0.1:8080

O hello-world deve imprimir uma mensagem de boas-vindas e o curl deve devolver ok. Para conferir a política de logs: docker info --format '{{.LoggingDriver}}' deve mostrar local.

Problemas comuns

  • "permission denied while trying to connect to the Docker daemon socket": você não está no grupo docker ou ainda não refez o login. Use sudo ou rode newgrp docker.
  • "docker-compose: command not found": o comando novo é docker compose. Scripts antigos podem ser ajustados ou receber um alias.
  • Conflito de rede com sua LAN/VPN: o Docker usa faixas de 172.17.0.0/16 em diante. Se sua VPN ou rede interna usa 172.16–172.31, defina outra faixa em daemon.json com "default-address-pools": [{"base": "10.200.0.0/16", "size": 24}] e reinicie o Docker.
  • Disco cheio em /var/lib/docker: veja o consumo com docker system df e limpe imagens sem uso com docker image prune -a (confira antes o que será removido). Em servidores com NVMe separado, vale mover o data-root para o volume maior.
  • Docker dentro de LXC no Proxmox falhando com "ip_unprivileged_port_start ... permission denied": é uma incompatibilidade entre versões recentes do containerd e LXC não privilegiado. Atualize o Proxmox VE para 9.1 ou superior ou, melhor, rode o Docker numa VM.

Perguntas frequentes

Qual a diferença entre docker-compose e docker compose?

O docker-compose (com hífen) é a versão antiga, escrita em Python e descontinuada. O docker compose (com espaço) é o plugin atual, instalado com o pacote docker-compose-plugin, e lê os mesmos arquivos compose.yaml.

Posso instalar o Docker com apt install docker.io?

Funciona, mas o pacote da distribuição costuma estar defasado. Para servidores, prefira o repositório oficial da Docker, como mostrado neste artigo.

Posso instalar o Docker direto no host Proxmox?

Não é recomendado: o Docker altera o iptables e a rede do host e pode conflitar com o firewall e as bridges do Proxmox. Rode-o em uma VM Debian ou Ubuntu. Veja também o artigo «LXC ou VM no Proxmox: qual a diferença e quando usar cada um» e, para segurança das imagens, «Segurança em containers: imagens mínimas, usuário não-root, Trivy e secrets (Docker e Kubernetes)».

Como atualizar o Docker depois de instalado?

Como ele vem de um repositório apt, basta sudo apt update && sudo apt upgrade. Os containers são reiniciados quando o serviço reinicia, então faça isso em janela de manutenção.

Leitura complementar

Precisa de ajuda? Abra um ticket na Área do Cliente ou fale com o suporte pelo WhatsApp. Lembre-se de que, sem o serviço de Gerenciamento contratado, a administração do sistema e dos containers é de responsabilidade do cliente.

Esta resposta lhe foi útil? 0 Usuários acharam útil (0 Votos)

Leia também