Confira primeiro a versão

O repositório apt oficial do Docker atualmente suporta estas versões 64 bits do Ubuntu: 26.10, 26.04 LTS, 24.04 LTS e 22.04 LTS. Se a sua versão não está na lista, não troque o codinome da configuração do repositório abaixo por um suportado para forçar a instalação. Se não tem certeza da versão do seu sistema, dê uma olhada primeiro:

cat /etc/os-release

Este artigo cobre apenas um caminho: instalar o Docker Engine e o plugin Compose pelo repositório apt oficial do Docker. Docker Desktop, a versão snap e o script de conveniência estão fora do escopo.

Limpar pacotes antigos conflitantes

Os repositórios que vêm com o Ubuntu têm pacotes como docker.io, docker-compose e podman-docker, com nomes parecidos ou funções sobrepostas; remova-os antes de instalar a versão oficial. O comando dado pela documentação oficial é:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)

dpkg --get-selections lista apenas os pacotes realmente instalados no sistema, e cut -f1 extrai os nomes dos pacotes para o apt remove. Se nenhum estiver instalado, o trecho entre parênteses fica vazio e o apt remove reclama de falta de argumento, o que não atrapalha os passos seguintes.

A lista inclui containerd e runc. Se houver outros serviços na sua máquina que dependem do containerd do sistema, verifique as dependências reversas antes de remover:

apt-cache rdepends containerd

Adicionar o repositório apt do Docker

Primeiro instale as dependências e depois coloque a chave GPG oficial no lugar:

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Em seguida, escreva a definição do repositório. O formato atual oficial é o deb822, e o arquivo é /etc/apt/sources.list.d/docker.sources:

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Os dois $(...) são expandidos pelo shell no momento da gravação: Suites recebe o codinome da distribuição atual, e Architectures recebe a arquitetura da máquina, então o mesmo comando funciona sem ajustes em x86_64 e arm64. Depois de escrever, atualize o índice mais uma vez:

sudo apt update

Na saída devem aparecer as linhas de download.docker.com, sem erros de assinatura GPG. Executei esses passos em um contêiner Ubuntu 26.04.1 LTS (arm64): no docker.sources gerado, Suites ficou resolute e Architectures ficou arm64, e o apt update baixou normalmente o índice de pacotes de resolute/stable.

Instalação

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

Cada um dos cinco pacotes cuida de uma coisa: docker-ce é o motor, docker-ce-cli fornece o comando docker, containerd.io é o runtime subjacente, docker-buildx-plugin fornece docker buildx e docker-compose-plugin fornece docker compose. O Compose é um plugin, e o uso é docker compose up, com espaço, não o antigo comando autônomo docker-compose.

Depois de instalar no mesmo contêiner 26.04.1, as versões que vi foram Docker 29.9.1, Compose v5.6.0, buildx v0.38.0. Esses são os números de 18 de outubro de 2026; a versão que você encontrar no repositório no momento em que instalar é a que vale.

Verificação

sudo docker run hello-world

Ele baixa e executa a imagem hello-world; ver a mensagem de boas-vindas significa que o motor e a linha de comando estão funcionando. Se aparecer um aviso de que não foi possível conectar ao daemon do Docker, em máquinas com systemd use systemctl status docker para ver o estado do serviço.

Rodar o docker sem sudo

Depois da instalação, o grupo docker já existe, mas não tem nenhum usuário, então rodar docker diretamente é negado por falta de permissão e exige sudo. Para eliminar o sudo, adicione-se ao grupo:

sudo groupadd docker
sudo usermod -aG docker $USER

Se o grupo já existe, o groupadd retorna um erro que pode ser ignorado; siga com o segundo comando. A associação ao grupo é definida no login, então deslogue e faça login de novo, ou execute newgrp docker no terminal atual. Depois verifique sem sudo:

docker run hello-world

Isso tem um preço. A documentação oficial do Docker diz explicitamente: o grupo docker equivale a conceder permissão de nível root ao usuário. Portanto, adicione apenas as contas que realmente precisam, não coloque todos os usuários lá para economizar trabalho. Para remover um usuário, substitua NOME_DE_USUARIO pelo nome da conta em questão:

sudo gpasswd -d NOME_DE_USUARIO docker

Faz efeito depois de um novo login.

Início automático no boot

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Upgrade e desinstalação

Os pacotes do Docker são gerenciados pelo apt como qualquer outro, então o upgrade é o habitual sudo apt update seguido de sudo apt upgrade.

A desinstalação tem três partes, na forma como a documentação oficial escreve:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

Esse passo não remove imagens, contêineres, volumes nem os arquivos de configuração que você modificou. Para limpar tudo isso junto, é preciso apagar manualmente os diretórios de dados:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

Esses dois comandos apagam permanentemente todas as imagens, contêineres e volumes do host, sem lixeira. Se houver dados que precisam ser mantidos, faça backup antes de executar. Por fim, remova o repositório e a chave:

sudo rm /etc/apt/sources.list.d/docker.sources
sudo rm /etc/apt/keyrings/docker.asc

Os arquivos de configuração que você modificou também não são limpos automaticamente e precisam ser removidos manualmente.