Instalação do Docker e Docker Compose no Linux: guia completo
Docker & Containers · Por Kevin Marcondes · Publicado em · Atualizado em · 8 min de leitura
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 containersVeja também
- tutorial: implementar Canary releases com Traefik em Docker Compose usando headers e weight routing para deploys graduais de aplicações PHP
- Tutorial: configurar HAProxy com Let's Encrypt e healthchecks para balanceamento de tráfego entre containers Docker em VPS (passo a passo)
- Tutorial prático: implementar mTLS entre Nginx e microserviços usando smallstep CA em Docker Compose
- Tutorial: configurar cgroup v2 e systemd ResourceControl para limitar CPU, memória e I/O de containers Docker no Debian