Instalação do Docker e Docker Compose no Linux: guia completo

Docker & Containers · Por · Publicado em · Atualizado em · 8 min de leitura

Detalhe do painel traseiro de servidores mostrando portas VGA, serial e Ethernet
Portas VGA, serial e Ethernet em um rack de servidores Foto: Brett Sayles / Pexels

Este guia mostra, passo a passo, como instalar o Docker e o Docker Compose no Linux, cobrindo Ubuntu/Debian, Fedora/CentOS, Arch e openSUSE. Você vai configurar o repositório, instalar o Engine e o Compose, habilitar o serviço e testar com um container de exemplo. Ao final, há verificação e solução de problemas comuns. Vamos começar.

Pré-requisitos e o que você vai instalar

Você precisa de um Linux atualizado, acesso de administrador (sudo ou root) e conexão à internet. O Docker usa recursos do kernel (namespaces e cgroups) e funciona bem em distribuições modernas. Instalar o Compose permite orquestrar serviços com um arquivo YAML. Vamos abordar repositórios oficiais quando fizer sentido e, em outros casos, usar pacotes da própria distribuição.

Se está avaliando a adoção, veja um comparativo entre Docker e máquinas virtuais para entender prós e contras em disponibilidade.

  • Conta com privilégios de sudo ou root.
  • Portas e DNS funcionando para baixar pacotes e imagens.
  • Espaço em disco para imagens e volumes (pasta padrão em /var/lib/docker).
  • Systemd ativo para gerenciar o serviço do Docker.
Distribuição Gerenciador de pacotes Serviço systemd
Ubuntu/Debian apt docker
Fedora/CentOS/RHEL dnf ou yum docker
Arch Linux pacman docker
openSUSE zypper docker

Passo 1 — Remover versões antigas (se houver)

Antes de instalar, remova pacotes antigos para evitar conflitos. Isso não remove imagens e volumes por padrão. Se você remover manualmente /var/lib/docker, perderá imagens, volumes e camadas. Faça backup se precisar manter dados. Este passo é seguro para seguir em estações e servidores onde a instalação é nova.

# Ubuntu/Debian
sudo apt-get remove -y docker docker-engine docker.io containerd runc

# Fedora/CentOS/RHEL
sudo dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine \
  || sudo yum remove -y docker docker-client docker-common docker-engine

# Arch Linux
sudo pacman -Rns --noconfirm docker docker-compose containerd runc

# openSUSE
sudo zypper remove -y docker docker-compose containerd runc

Passo 2 — Adicionar repositório (quando aplicável) e preparar dependências

Em Debian/Ubuntu, use o repositório oficial do Docker para versões atuais. Em Fedora/CentOS/RHEL, adicione o repo correspondente. Em Arch e openSUSE, geralmente os pacotes da própria distro já são suficientes; uma atualização do índice resolve. Este passo também instala utilitários necessários para baixar e validar chaves.

# Ubuntu (repositório Docker)
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
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
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Debian (repositório Docker)
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Fedora (repositório Docker)
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo

# CentOS/RHEL (repositório Docker)
sudo yum -y install yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# Arch Linux (índices da distribuição)
sudo pacman -Sy --noconfirm

# openSUSE (índices da distribuição)
sudo zypper refresh

Passo 3 — Instalar o Docker Engine e a CLI

Agora, instale o daemon do Docker, a CLI e, quando aplicável, o containerd. Os nomes dos pacotes variam ligeiramente entre as famílias de distribuições. Após a instalação, o binário docker ficará disponível no PATH e o serviço poderá ser gerenciado pelo systemd.

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

# Fedora/CentOS/RHEL
sudo dnf install -y docker-ce docker-ce-cli containerd.io \
  || sudo yum install -y docker-ce docker-ce-cli containerd.io

# Arch Linux
sudo pacman -S --noconfirm docker containerd

# openSUSE
sudo zypper install -y docker

Passo 4 — Iniciar, habilitar e testar o serviço do Docker

Ative o serviço para iniciar automaticamente com o sistema e execute um teste simples com a imagem de exemplo. Esse teste baixa uma imagem pequena, executa e imprime uma mensagem de sucesso. Se o serviço subir sem erros, você está pronto para criar imagens e rodar containers em pipelines de CI/CD, por exemplo com GitHub Actions.

sudo systemctl enable --now docker
sudo docker run --rm hello-world
sudo docker info

Passo 5 — Executar Docker sem sudo (grupo docker)

Para uso diário, adicione seu usuário ao grupo docker. Isso evita precisar de sudo a cada comando. Atenção: membros do grupo docker podem ganhar privilégios equivalentes a root, pois o daemon tem acesso amplo ao sistema. Faça isso apenas para usuários confiáveis. Após aplicar, abra nova sessão para atualizar grupos ativos.

sudo groupadd -f docker
sudo usermod -aG docker "$USER"
# Aplique o grupo na sessão atual ou faça logoff/login
newgrp docker
# Teste sem sudo
docker run --rm hello-world

Passo 6 — Instalar o Docker Compose (v2 como plugin; v1 onde aplicável)

O Compose v2 integra-se ao docker como subcomando. Em distribuições com o repositório oficial do Docker, instale o pacote docker-compose-plugin. Em outras, o pacote docker-compose pode fornecer a versão clássica (v1), ainda funcional. Ambos permitem definir serviços com um arquivo YAML e subir com um único comando.

# Ubuntu/Debian (repositório Docker)
sudo apt-get update
sudo apt-get install -y docker-compose-plugin
# Verifique o plugin v2
docker compose version

# Fedora/CentOS/RHEL (repositório Docker)
sudo dnf install -y docker-compose-plugin || sudo yum install -y docker-compose-plugin
# Verifique o plugin v2
docker compose version

# Arch Linux (pacote da distribuição)
sudo pacman -S --noconfirm docker-compose
# Verifique a versão instalada (v1)
docker-compose --version

# openSUSE (pacote da distribuição)
sudo zypper install -y docker-compose
# Verifique a versão instalada (geralmente v1)
docker-compose --version

Verificação final e solução de problemas comuns

Confirme se tudo funciona: o serviço precisa estar ativo, o usuário no grupo correto e a rede dos containers acessível. Abaixo, alguns diagnósticos úteis. Veja também como padronizar logs em produção com o guia de logs estruturados e correlação.

Erros frequentes e correções:

• Permissão negada no socket: verifique se o usuário está no grupo docker e reinicie a sessão.

• Falha ao iniciar: confira logs do serviço e se o kernel suporta cgroups/overlay2.

• Sem rede no container: valide DNS/saída para internet e regras de firewall/NAT.

• Proxy corporativo: configure variáveis de ambiente e, se preciso, proxy do systemd do Docker.

  • Permissão negada no socket: confirme grupo docker ativo na sessão.
  • Falha no daemon: cheque logs do serviço e módulos do kernel.
  • Sem rede: revise DNS, NAT e firewall.
  • Ambiente com proxy: exporte variáveis HTTP(S)_PROXY e NO_PROXY conforme política.
# Verificar status e logs
systemctl status docker --no-pager
journalctl -u docker -b --no-pager | tail -n 100

# Testar rede do container (DNS e IP)
docker run --rm alpine sh -c "ip addr; nslookup google.com || true"

# Conferir versões
docker version
docker compose version || docker-compose --version

Perguntas frequentes

Qual a diferença entre Docker Compose v1 e v2?

O Compose v2 é integrado ao Docker como plugin e usa o subcomando “docker compose”. A versão v1 é um binário separado, geralmente chamado de “docker-compose”. Em funcionalidades, são semelhantes para a maioria dos usos; novos recursos chegam primeiro ao v2.

Preciso de virtualização de hardware para usar Docker?

Não. Containers usam isolamento do kernel (namespaces e cgroups), não hipervisores. A virtualização de hardware é necessária apenas para VMs. Para builds multiplataforma ou emuladores, ferramentas adicionais podem usar virtualização, mas não é pré-requisito para rodar containers comuns.

Onde o Docker armazena imagens e volumes por padrão?

Por padrão, os dados ficam em /var/lib/docker. Você pode alterar o local editando a configuração do daemon e apontando para outro diretório ou disco. Mover esse diretório sem cuidado pode corromper dados; faça backup antes de alterações.

Como desinstalar completamente o Docker e limpar dados?

Remova os pacotes do Docker com o gerenciador da sua distribuição e, se quiser limpar tudo, apague manualmente /var/lib/docker e /var/lib/containerd. Atenção: isso remove imagens, volumes e camadas. Faça backup do que for necessário antes de excluir.

É seguro adicionar meu usuário ao grupo docker?

Concede privilégios equivalentes a root, pois o daemon controla recursos do sistema. Em estações pessoais, costuma ser aceitável. Em servidores multiusuário, prefira sudo controlado e políticas de acesso. Avalie riscos e aplique o princípio do menor privilégio.

Quer ir além com containers?

Se quiser discutir cenários avançados (deploy, CI/CD, segurança e logs) ou revisar suas configurações, mande uma mensagem e conversamos.

Falar sobre containers

Veja também