DOCKER CONTAINER ARCHITECTURE Ubuntu Host OS (Kernel) Docker Engine + containerd Container 1 App + Deps Image Layer Container 2 App + Deps Image Layer Container 3 App + Deps Image Layer Containers share the host kernel but are isolated via namespaces and cgroups

O Docker se tornou o padrão da indústria para containerização, permitindo que desenvolvedores e administradores de sistemas empacotem aplicações com todas as suas dependências em containers portáteis e leves. Seja configurando um ambiente de desenvolvimento ou preparando um servidor de produção, instalar o Docker no Ubuntu é uma habilidade fundamental que todo profissional Linux deve dominar.

Este guia o conduz por todo o processo de instalação do Docker Engine, Docker CLI, containerd e do plugin Docker Compose no Ubuntu 22.04 (Jammy Jellyfish) e Ubuntu 24.04 (Noble Numbat). Também abordaremos as etapas pós-instalação, verificação, comandos essenciais e solução de problemas comuns.

Pré-requisitos

Antes de começar, certifique-se de que você tem:

  • Um sistema executando Ubuntu 22.04 ou 24.04 (edição desktop ou servidor)
  • Acesso ao terminal com privilégios sudo
  • Uma conexão estável com a internet
  • Familiaridade básica com a linha de comando Linux

Nota: Estas instruções se aplicam à arquitetura x86_64 / amd64. Se você estiver executando ARM64, os passos são os mesmos, mas o Docker irá automaticamente baixar as imagens específicas da arquitetura correta.

Passo 1: Desinstalar Versões Antigas ou Conflitantes

O Ubuntu pode vir com pacotes Docker mais antigos ou não oficiais como docker.io, docker-doc, docker-compose ou podman-docker. Estes devem ser removidos antes de instalar o Docker Engine oficial para evitar conflitos.

Execute o seguinte comando para remover quaisquer pacotes Docker pré-existentes:

sudo apt-get remove docker docker-engine docker.io containerd runc docker-compose docker-doc podman-docker

Se nenhum desses pacotes estiver instalado, o apt-get informará que não há nada para remover. Isso é perfeitamente normal.

Em seguida, limpe qualquer configuração restante:

sudo apt-get autoremove -y

Importante: O conteúdo de /var/lib/docker/, incluindo imagens, containers, volumes e redes, não é automaticamente excluído quando você desinstala o Docker. Se você quiser começar completamente do zero, pode remover esse diretório manualmente com sudo rm -rf /var/lib/docker /var/lib/containerd, mas esteja ciente de que isso destrói todos os dados Docker existentes.

Passo 2: Configurar o Repositório APT do Docker

O Docker fornece um repositório APT oficial que sempre contém a última versão estável. Configurá-lo garante que você receba atualizações através do fluxo de trabalho padrão apt upgrade.

Primeiro, atualize o índice de pacotes e instale os pacotes pré-requisitos:

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

Crie o diretório para o keyring do repositório:

sudo install -m 0755 -d /etc/apt/keyrings

Baixe a chave GPG oficial do Docker:

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

Adicione o repositório Docker às suas fontes APT:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Atualize o índice de pacotes novamente para que o APT reconheça o novo repositório:

sudo apt-get update

Você deve ver o repositório Docker listado na saída. Se você ver um erro GPG, verifique se o arquivo keyring foi baixado corretamente.

Passo 3: Instalar o Docker Engine, CLI e Plugins

Agora instale a stack completa do Docker, que inclui o daemon Docker Engine, o cliente CLI, containerd (o runtime de container) e os plugins Compose e Buildx:

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

Aqui está o que cada pacote fornece:

PacoteFinalidade
docker-ceO daemon Docker Engine (Community Edition)
docker-ce-cliA interface de linha de comando docker
containerd.ioO runtime de container que gerencia o ciclo de vida dos containers
docker-buildx-pluginCapacidades estendidas de build com BuildKit
docker-compose-pluginO subcomando docker compose (Compose v2)

Passo 4: Verificar a Instalação

Confirme que o Docker foi instalado e o daemon está em execução:

sudo systemctl status docker

Você deve ver active (running) na saída. Se o serviço não estiver em execução, inicie-o:

sudo systemctl start docker
sudo systemctl enable docker

Agora execute o clássico container hello-world para verificar se tudo funciona de ponta a ponta:

sudo docker run hello-world

Este comando baixa uma pequena imagem de teste do Docker Hub e a executa em um container. Se você ver a mensagem “Hello from Docker!” seguida de uma explicação do que acabou de acontecer, sua instalação do Docker está funcionando corretamente.

Verifique as versões instaladas:

docker --version
docker compose version

Passo 5: Configuração Pós-Instalação

Executar Docker Sem sudo

Por padrão, o daemon Docker se vincula a um socket Unix de propriedade do root, o que significa que você precisa de sudo para cada comando docker. Para evitar isso, adicione seu usuário ao grupo docker:

sudo usermod -aG docker $USER

Aviso de Segurança: O grupo docker concede privilégios equivalentes ao root. Adicione apenas usuários confiáveis a este grupo. Para ambientes de produção, considere usar o modo rootless.

Para que a mudança de grupo tenha efeito, faça logout e login novamente, ou execute:

newgrp docker

Verifique se você pode executar o Docker sem sudo:

docker run hello-world

Configurar Docker para Iniciar no Boot

No Ubuntu 22.04 e 24.04 com systemd, o Docker geralmente é habilitado por padrão. Verifique e garanta que está configurado para iniciar no boot:

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

Configurar Logging Padrão

O driver de logging padrão do Docker (json-file) pode consumir espaço significativo em disco em servidores movimentados. Uma boa prática é configurar a rotação de logs criando ou editando o arquivo de configuração do daemon Docker:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<'EOF'
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF
sudo systemctl restart docker

Isso limita o arquivo de log de cada container a 10 MB e mantém no máximo 3 arquivos de log rotacionados.

Referência Rápida de Comandos Docker

Aqui está uma referência rápida dos comandos Docker mais utilizados para você começar:

Ciclo de Vida do Container

# Executar um container em primeiro plano
docker run <image>

# Executar um container em segundo plano (modo detached)
docker run -d --name my-container <image>

# Executar um shell interativo dentro de um container
docker run -it ubuntu:24.04 /bin/bash

# Listar containers em execução
docker ps

# Listar todos os containers (incluindo parados)
docker ps -a

# Parar um container em execução
docker stop <container_name_or_id>

# Iniciar um container parado
docker start <container_name_or_id>

# Remover um container parado
docker rm <container_name_or_id>

# Remover um container em execução forçadamente
docker rm -f <container_name_or_id>

Gerenciamento de Imagens

# Baixar uma imagem do Docker Hub
docker pull nginx:latest

# Listar imagens baixadas
docker images

# Remover uma imagem
docker rmi <image_name_or_id>

# Remover todas as imagens não utilizadas
docker image prune -a

Inspeção e Depuração

# Visualizar logs do container
docker logs <container_name_or_id>

# Seguir logs do container em tempo real
docker logs -f <container_name_or_id>

# Executar um comando dentro de um container em execução
docker exec -it <container_name_or_id> /bin/bash

# Inspecionar detalhes do container (rede, montagens, configuração)
docker inspect <container_name_or_id>

# Visualizar estatísticas de uso de recursos em tempo real
docker stats

Limpeza

# Remover todos os containers parados
docker container prune

# Remover todas as imagens, containers, redes e volumes não utilizados
docker system prune -a --volumes

# Verificar uso de disco
docker system df

Solução de Problemas Comuns

Permissão Negada ao Executar Comandos docker

Se você ver permission denied while trying to connect to the Docker daemon socket, significa que seu usuário não está no grupo docker ou você não fez logout e login novamente após se adicionar ao grupo.

# Verificar se seu usuário está no grupo docker
groups $USER

# Se docker não estiver listado, adicione-o
sudo usermod -aG docker $USER

# Faça logout e login novamente, então tente novamente

Não Consegue Conectar ao Daemon Docker

Se você receber Cannot connect to the Docker daemon at unix:///var/run/docker.sock, o serviço Docker pode não estar em execução:

sudo systemctl start docker
sudo systemctl status docker

Verifique os logs do daemon Docker para erros:

sudo journalctl -u docker.service --no-pager -n 50

Problemas de Resolução DNS Dentro de Containers

Se os containers não conseguem resolver nomes de domínio, a configuração DNS padrão do Docker pode conflitar com seu sistema. Corrija especificando servidores DNS na configuração do daemon:

sudo tee /etc/docker/daemon.json <<'EOF'
{
  "dns": ["8.8.8.8", "8.8.4.4"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF
sudo systemctl restart docker

Espaço em Disco Acabando

Imagens, containers e volumes Docker podem consumir espaço substancial em disco ao longo do tempo. Limpe regularmente os recursos não utilizados:

# Verificar o que está consumindo espaço
docker system df

# Limpar tudo que não está em uso atualmente
docker system prune -a --volumes

Conflitos de Pacotes Após Atualizar o Ubuntu

Se você atualizar do Ubuntu 22.04 para o 24.04, o repositório Docker deve continuar funcionando. No entanto, se você encontrar problemas, execute novamente os passos de configuração do repositório do Passo 2 para garantir que o codename correto seja usado na lista de fontes.

Próximos Passos

Agora que o Docker está instalado e em execução, você está pronto para começar a containerizar aplicações. Aqui estão alguns próximos passos recomendados:

  • Aprenda Docker Compose para gerenciar aplicações multi-container. Veja nosso guia: Docker Compose: Um Guia Prático para Administradores de Sistemas
  • Explore networking para entender como os containers se comunicam
  • Configure monitoramento para acompanhar a saúde e o uso de recursos dos seus containers
  • Instale atualizações de segurança regularmente no seu host Ubuntu

Conclusão

Você instalou com sucesso o Docker Engine, Docker CLI, containerd e Docker Compose no Ubuntu. Seguindo os passos pós-instalação, você configurou seu ambiente tanto para conveniência quanto para segurança. A referência rápida de comandos deve servir como referência prática enquanto você começa a trabalhar com containers.

O Docker é uma ferramenta poderosa que, quando combinada com Docker Compose e orquestração adequada, pode simplificar todo o seu fluxo de trabalho de implantação. Mantenha sua instalação Docker atualizada executando sudo apt-get update && sudo apt-get upgrade regularmente, e sempre consulte a documentação oficial do Docker para as melhores práticas mais recentes.