Como instalar o Docker no Ubuntu: Guia completo e amigável para iniciantes (Método oficial)

目次

1. Introdução

Ao configurar um ambiente de desenvolvimento no Ubuntu, situações em que você pensa “vamos apenas instalar o Docker por enquanto” tornaram‑se cada vez mais comuns. Aplicações web, processamento em lote, bancos de dados de teste, middleware de teste… Se você instala tudo isso manualmente a cada vez, um enorme volume de tempo e esforço é consumido apenas para a preparação do ambiente.

É aqui que a tecnologia de virtualização por contêiner Docker se torna extremamente útil. Com o Docker, você pode gerenciar não apenas a aplicação em si, mas também todas as bibliotecas e configurações necessárias como uma “imagem”. Uma vez que o Docker esteja instalado no Ubuntu, você pode facilmente:

  • Iniciar um novo ambiente de desenvolvimento em minutos
  • Garantir que todos os membros da equipe possam reproduzir o comportamento no mesmo ambiente
  • Recriar uma configuração semelhante à de produção localmente com facilidade

Esses benefícios podem ser aproveitados com esforço mínimo.

Por outro lado, para quem está usando o Docker pela primeira vez, há muitos pontos de tropeço comuns:

  • Não saber qual procedimento de instalação está realmente correto
  • Não entender a diferença entre o repositório padrão do Ubuntu e o repositório oficial do Docker
  • Encontrar erros de permissão devido à confusão sobre quando usar sudo

Quando você pesquisa por “ubuntu install docker”, encontrará muitos artigos listando longas sequências de comandos, mas eles frequentemente deixam de explicar por que esses passos são necessários ou o que caracteriza uma instalação completa.

1-1. Objetivo deste Artigo

Este artigo destina‑se a leitores que desejam instalar o Docker no Ubuntu, e cobre os seguintes pontos principais:

  • O procedimento atualmente comum para instalar o Docker no Ubuntu
  • Um método de instalação mais gerenciável usando o repositório oficial
  • Como executar o comando docker sem sudo
  • Verificação pós‑instalação e comandos básicos essenciais
  • Uma introdução às ferramentas comumente usadas, como o Docker Compose

Em vez de simplesmente listar comandos, este guia explica por que cada passo é necessário, ajudando‑o a manter seu ambiente mais facilmente no futuro.

1-2. Público‑Alvo e Pré‑requisitos

Este artigo destina‑se a leitores que:

  • Entender operações básicas do Ubuntu (abrir um terminal, usar o comando apt, etc.)
  • Ser desenvolvedor ou engenheiro aspirante que está experimentando o Docker pela primeira vez
  • Estar considerando migrar ambientes de teste existentes para contêineres

Conhecimento avançado de administração Linux não é necessário. Desde que você se sinta confortável digitando comandos em um terminal, este guia deve ser suficiente.

1-3. Estrutura do Artigo e Como Lê‑lo

Este artigo prossegue na seguinte ordem:

  • Verificando pré‑requisitos
  • Métodos de instalação (repositório oficial / baseado em script)
  • Configurações de permissão e verificação
  • Instalando o Docker Compose
  • Resolução de problemas e próximos passos

Você pode ler o artigo do início ao fim, ou se o Docker já estiver instalado, pode focar apenas nas seções “Permissões” ou “Compose”.

2. Pré‑requisitos e Preparação

Instalar o próprio Docker é relativamente simples, mas dependendo da sua versão do Ubuntu ou do ambiente existente, há vários pontos que vale a pena verificar antes. Esta seção resume os pré‑requisitos e preparações necessários para uma instalação tranquila.

2-1. Versões do Ubuntu Suportadas

O Docker funciona em muitas versões do Ubuntu, mas as seguintes versões LTS são as mais comumente usadas:

  • Ubuntu 22.04 LTS (Recomendado)
  • Ubuntu 20.04 LTS
  • Ubuntu 24.04 LTS (Mais recente)

LTS (Long Term Support) oferece estabilidade a longo prazo, tornando‑as ideais para manter ambientes de desenvolvimento baseados em Docker.

Versões não LTS (como 23.10) também podem ser usadas, mas as versões LTS são geralmente preferidas em ambientes profissionais.

2-2. Pacotes Docker Pré‑instalados

Ubuntu’s default repository includes a package called docker.io. However, this is not the official Docker package provided by Docker Inc., and updates tend to lag behind. Therefore, installing Docker from the official repository is strongly recommended.

Ubuntu’s repositório padrão inclui um pacote chamado docker.io. No entanto, este não é o pacote oficial do Docker fornecido pela Docker Inc., e as atualizações tendem a ficar atrasadas. Portanto, instalar o Docker a partir do repositório oficial é altamente recomendado.

First, check and remove any existing Docker-related packages if necessary:

Primeiro, verifique e remova quaisquer pacotes relacionados ao Docker, se necessário:

sudo apt remove docker docker.io containerd runc

If the message indicates that nothing is installed, no action is required.

Se a mensagem indicar que nada está instalado, nenhuma ação é necessária.

2-3. Updating APT and Installing Required Packages

2-3. Atualizando o APT e Instalando Pacotes Necessários

Before adding Docker’s repository, update APT and install required tools:

Antes de adicionar o repositório oficial do Docker, atualize o APT e instale as ferramentas necessárias:

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

These tools are required to add Docker’s GPG key and repository securely.

Essas ferramentas são necessárias para adicionar a chave GPG do Docker e o repositório de forma segura.

2-4. Verifying Administrator Privileges (sudo)

2-4. Verificando Privilégios de Administrador (sudo)

Docker installation requires sudo privileges. If your account does not have sudo access, switch to an administrator account or request permission.

A instalação do Docker requer privilégios sudo. Se sua conta não tem acesso sudo, troque para uma conta de administrador ou solicite permissão.

You can verify sudo access with the following command:

Você pode verificar o acesso sudo com o seguinte comando:

sudo -v

If you are prompted for a password and the command succeeds, you are ready to proceed.

Se for solicitado uma senha e o comando for bem-sucedido, você está pronto para prosseguir.

2-5. Checking Network Connectivity

2-5. Verificando a Conectividade de Rede

Installing Docker requires access to external repositories, so an active internet connection is mandatory. In corporate or proxy environments, GPG key retrieval may fail due to access restrictions.

Instalar o Docker requer acesso a repositórios externos, portanto uma conexão ativa à internet é obrigatória. Em ambientes corporativos ou com proxy, a obtenção da chave GPG pode falhar devido a restrições de acesso.

In such cases, consult your network administrator regarding proxy settings or allowlist configurations.

Nesses casos, consulte o administrador de rede sobre as configurações de proxy ou listas de permissão.

2-6. Choosing the Installation Method

2-6. Escolhendo o Método de Instalação

There are three main ways to install Docker:

Existem três maneiras principais de instalar o Docker:

  1. Install via the official Docker repository (Recommended)
  2. Use the get.docker.com installation script (Quick and easy)
  3. Manually download and install Docker .deb packages (Special cases)

  4. Instalar via o repositório oficial do Docker (Recomendado)

  5. Usar o script de instalação get.docker.com (Rápido e fácil)
  6. Baixar e instalar manualmente os pacotes .deb do Docker (Casos especiais)

This article focuses primarily on the official repository method, which is the most common and easiest to maintain.

Este artigo foca principalmente no método do repositório oficial, que é o mais comum e fácil de manter.

3. Installing Docker

3. Instalando o Docker

Now let’s install Docker on Ubuntu. Although multiple installation methods exist, this guide focuses on the official Docker repository method, which is the most reliable and widely used in production environments.

Agora vamos instalar o Docker no Ubuntu. Embora existam vários métodos de instalação, este guia foca no método do repositório oficial do Docker, que é o mais confiável e amplamente usado em ambientes de produção.

This method allows stable upgrades via apt upgrade, making it ideal for long-term use.

Este método permite atualizações estáveis via apt upgrade, tornando-o ideal para uso a longo prazo.

3-1. Adding the Official Docker Repository (Recommended)

3-1. Adicionando o Repositório Oficial do Docker (Recomendado)

First, register the official GPG key provided by Docker and add Docker’s repository to APT.
Once this is configured correctly, you can avoid accidentally installing the outdated docker.io package from Ubuntu’s default repository.

Primeiro, registre a chave GPG oficial fornecida pelo Docker e adicione o repositório do Docker ao APT.
Uma vez configurado corretamente, você pode evitar instalar acidentalmente o pacote desatualizado docker.io do repositório padrão do Ubuntu.

3-1-1. Registering the GPG Key

3-1-1. Registrando a Chave GPG

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
  • /etc/apt/keyrings/ is the recommended key storage location for Ubuntu 22.04 and later
  • --dearmor converts the key into binary format

  • /etc/apt/keyrings/ é o local recomendado para armazenamento de chaves no Ubuntu 22.04 e posteriores

  • --dearmor converte a chave para formato binário

This step allows APT to trust the official Docker repository.

Esta etapa permite que o APT confie no repositório oficial do Docker.

3-1-2. Adding the Repository

3-1-2. Adicionando o Repositório

Next, add Docker’s repository to APT’s source list.

Em seguida, adicione o repositório do Docker à lista de fontes do APT.

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

Key points:

Pontos principais:

  • $(. /etc/os-release && echo $VERSION_CODENAME) automatically inserts the correct Ubuntu codename (such as jammy or focal )
  • Only the stable repository is added

  • $(. /etc/os-release && echo $VERSION_CODENAME) insere automaticamente o codinome correto do Ubuntu (como jammy ou focal)

  • Apenas o repositório estável é adicionado

3-1-3. Updating Repository Information

3-1-3. Atualizando as Informações do Repositório

After adding the repository, update the APT index.

Após adicionar o repositório, atualize o índice do APT.

sudo apt update

At this point, docker-ce (Docker Engine) should appear as an installable package.

Neste ponto, docker-ce (Docker Engine) deve aparecer como um pacote instalável.

3-2. Installing Docker Engine

3-2. Instalando o Docker Engine

Now install the main Docker packages.

Agora instale os principais pacotes do Docker.

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

Package roles:

Funções dos pacotes:

  • docker-ce : Núcleo do Docker Engine
  • docker-ce-cli : Interface de linha de comando do Docker
  • containerd.io : Runtime de contêiner principal usado pelo Docker
  • docker-buildx-plugin : Recursos avançados de build, como builds multiplataforma
  • docker-compose-plugin : Docker Compose V2 (comando docker compose)

Após a instalação, o daemon do Docker inicia automaticamente.

3-3. Verificando a Instalação

Verifique o status de execução do Docker com o comando a seguir:

sudo systemctl status docker

Se você vir active (running), o Docker está operando corretamente.

Pressione q para sair da visualização de status.

3-4. Opcional: Instalação via Script para Conveniência

O Docker também fornece um script de instalação tudo‑em‑um.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Vantagens:

  • Menos comandos e configuração rápida
  • Ideal para ambientes simples ou descartáveis

Desvantagens:

  • Controle de versão difícil
  • Frequentemente desencorajado para uso em produção ou a longo prazo

Embora conveniente para iniciantes, este artigo prioriza a manutenibilidade e, portanto, foca no método do repositório oficial.

3-5. Observações para as Últimas Versões do Ubuntu (ex.: 24.04)

Imediatamente após um lançamento principal do Ubuntu, o repositório oficial do Docker pode ainda não suportar totalmente a nova versão.
Nesses casos, verifique o seguinte:

  • Que o local e o formato da chave GPG correspondam às especificações atuais
  • Que VERSION_CODENAME seja oficialmente suportado
  • Que não ocorram erros de assinatura durante apt update

Se o suporte for atrasado, usar temporariamente o script get.docker.com pode ser uma solução prática.

4. Permissões de Usuário e Executando Docker sem sudo

Após instalar o Docker, você pode querer começar a usar o comando docker imediatamente. Contudo, por padrão, você deve prefixar cada comando com sudo.

Esse comportamento é intencional por razões de segurança, mas é inconveniente para desenvolvimento ou aprendizado diário. Para resolver isso, você pode adicionar seu usuário ao grupo docker, permitindo que os comandos Docker sejam executados sem sudo.

4-1. Por que Executar sem sudo é Importante

No Ubuntu, o daemon do Docker (dockerd) roda com privilégios de root.
Portanto, criar ou remover contêineres via o comando docker normalmente requer acesso root.

O grupo docker existe para lidar com essa necessidade.

  • Usuários neste grupo podemacessar diretamente o daemon do Docker**
  • Isso permite comandos como docker run sem sudo
  • Essa configuração é quase essencial para uso em desenvolvimento

Note que o grupo docker efetivamente concede privilégios próximos aos de root, portanto cautela é necessária em ambientes compartilhados.
(Para desktops pessoais ou WSL2, isso geralmente não é um problema.)

4-2. Adicionando Seu Usuário ao Grupo docker

Adicione o usuário atualmente logado ao grupo docker:

sudo usermod -aG docker $USER

Este comando adiciona o usuário ao grupo. A opção -aG significa append to group (adicionar ao grupo).

4-3. Aplicando as Alterações

As mudanças de associação ao grupo entram em vigor após sair e entrar novamente.

Para aplicar a mudança imediatamente, você também pode executar:

newgrp docker

Isso inicia uma nova sessão de shell com as permissões do grupo docker aplicadas.

4-4. Verificando Execução sem sudo

Agora teste o Docker sem sudo:

docker run hello-world

Saída bem-sucedida:

  • Hello from Docker!
  • A imagem é baixada e a mensagem é exibida

Se ocorrer um erro, verifique o seguinte:

  • Você saiu e entrou novamente após modificar a associação ao grupo?
  • Está sendo usado /usr/bin/docker?
  • O daemon do Docker está em execução ( systemctl status docker )?

4-5. Considerações de Segurança (Importante)

O grupo docker fornece privilégios poderosos que são efetivamente equivalentes ao acesso root.

  • Leitura de arquivos arbitrários
  • Montagem de diretórios do host em contêineres
  • Execução de operações de rede
  • Controle ao nível do sistema via o socket do Docker

Isso é aceitável para sistemas pessoais, mas o gerenciamento de usuários é crítico em servidores compartilhados.

Em tais casos, você pode considerar Docker sem root, que é discutido nas seções posteriores.

5. Verificação de Inicialização e Operação

Depois que a instalação do Docker e a configuração de permissões estiverem concluídas, o próximo passo é verificar se o Docker está operando corretamente.
Esta seção explica como checar o status do serviço Docker e realmente executar contêineres.

5-1. Verificando o Status do Daemon do Docker

Primeiro, verifique se o Docker está sendo executado corretamente em segundo plano.

sudo systemctl status docker

Indicadores de status chave:

  • active (running) → Operando normalmente
  • inactive → Não está em execução (deve ser iniciado manualmente)
  • failed → Erro de configuração ou dependência

Se o status for inactive ou failed, inicie o Docker com o seguinte comando:

sudo systemctl start docker

Para garantir que o Docker inicie automaticamente quando o SO for inicializado:

sudo systemctl enable docker

5-2. Verificando a Operação com o Contêiner hello-world

A forma mais comum de validar a instalação do Docker é executando a imagem oficial hello-world.

docker run hello-world

Este comando realiza as seguintes ações:

  1. Baixa a imagem do Docker Hub caso ela não esteja presente localmente
  2. Inicia um contêiner a partir da imagem
  3. Exibe uma mensagem de teste e encerra

Se for bem‑sucedido, você verá uma saída semelhante ao exemplo a seguir:

Hello from Docker!
This message shows that your installation appears to be working correctly.

Se essa mensagem aparecer, o Docker está instalado e funcionando corretamente.

5-3. Testando Comandos Básicos do Docker

Depois que a operação básica for confirmada, experimente alguns comandos Docker comumente usados.

5-3-1. Listando Imagens Docker

docker images

Isso exibe uma lista das imagens baixadas localmente. Se hello-world aparecer, tudo está funcionando como esperado.

5-3-2. Verificando Contêineres em Execução

docker ps

Este comando lista os contêineres que estão em execução no momento.
(O contêiner hello-world termina imediatamente e geralmente não aparecerá.)

Para exibir também os contêineres parados:

docker ps -a

5-3-3. Executando um Exemplo de Imagem Oficial

Para testar um servidor web Nginx simples:

docker run -d -p 8080:80 nginx
  • -d → Executa em segundo plano
  • -p → Mapeia a porta 8080 do host para a porta 80 do contêiner

Abra http://localhost:8080 no seu navegador para ver a página padrão do Nginx.

5-4. Parando e Removendo Contêineres

Você pode parar um contêiner em execução usando o comando a seguir:

docker stop <container-id>

Para remover um contêiner:

docker rm <container-id>

Para remover imagens não utilizadas:

docker rmi <image-id>

Lembre‑se de que as dependências seguem a ordem contêiner → imagem → volume, portanto remova‑as com cuidado.

5-5. Causas Comuns de Erros

● Erros de Permissão

Got permission denied while trying to connect to the Docker daemon socket
→ O usuário não foi adicionado ao grupo docker

● Daemon do Docker Não Está em Execução

Cannot connect to the Docker daemon at unix:///var/run/docker.sock
→ Inicie o Docker com systemctl start docker

● Problemas de Rede que Impedem o Download de Imagens

→ Verifique as configurações de proxy, DNS ou restrições de rede

● Pacote Legado docker.io Ainda Instalado

→ Desinstale-o completamente e reinstale o Docker a partir do repositório oficial

6. Instalando e Usando o Docker Compose

Uma ferramenta essencial para trabalhar com Docker em escala é o Docker Compose.
Aplicações web modernas costumam ser compostas por múltiplos componentes, como bancos de dados, caches, workers e servidores web. Gerenciar cada um deles individualmente com comandos docker run rapidamente se torna impraticável.

O Docker Compose permite definir várias configurações de contêineres em um único arquivo e gerenciá‑los em conjunto, tornando‑o uma das ferramentas mais usadas no desenvolvimento real.

6-1. Verificando a Instalação do Docker Compose V2

Ao instalar o Docker a partir do repositório oficial, o Docker Compose é instalado automaticamente como um plugin.

Verifique a instalação com o seguinte comando:

docker compose version

Se a instalação estiver correta, você deverá ver uma saída semelhante a:

Docker Compose version v2.x.x

Se aparecer um erro como docker: 'compose' is not a docker command, instale o plugin manualmente:

sudo apt install docker-compose-plugin

6-2. Benefícios do Docker Compose

As principais vantagens do Docker Compose incluem:

  • Gerenciamento unificado de múltiplos contêineres (iniciar, parar, reiniciar)
  • Configuração como código, garantindo ambientes reproduzíveis
  • Compartilhamento fácil de configurações de aplicação, API e banco de dados
  • Início de ambientes de desenvolvimento com um único docker compose up

Isso torna o Docker Compose quase indispensável para o desenvolvimento de aplicações.

6-3. Estrutura Básica de um Arquivo de Configuração do Compose

O Docker Compose usa um arquivo chamado docker-compose.yml (ou compose.yaml) para definir serviços.
Como exemplo mínimo, crie uma configuração simples que inicia o Nginx.

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

Execute o comando a seguir no diretório que contém o arquivo:

docker compose up -d

O Nginx será iniciado em segundo plano. Acesse http://localhost:8080 no seu navegador para confirmar.

6-4. Exemplo: Configuração Multi-Contêiner (Web + Banco de Dados)

O verdadeiro poder do Compose se revela ao gerenciar vários contêineres simultaneamente.
Por exemplo, executar uma aplicação web junto com o MySQL pode ser configurado da seguinte forma:

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

Explicação:

  • depends_on garante que o banco de dados seja iniciado antes da aplicação
  • volumes persiste os dados do banco de dados
  • Vários serviços são gerenciados dentro de um único arquivo YAML

Esse é um padrão altamente prático para ambientes de desenvolvimento.

6-5. Comandos Docker Compose Mais Usados

Esses comandos são úteis de memorizar:

CommandDescription
docker compose up -dStart containers in the background
docker compose downStop and remove containers and networks
docker compose buildBuild images using Dockerfile
docker compose psList containers managed by Compose
docker compose logs -fView logs (optionally per service)

Usar o Compose permite recriar ambientes idênticos repetidamente, tornando‑o ideal para desenvolvimento em equipe.

6-6. Casos de Uso Recomendados para o Compose no Desenvolvimento

  • Configuração local de ambiente com um único comando
  • Testes em ambientes próximos à produção
  • Execução de serviços combinados, como bancos de dados, caches e filas de mensagens
  • Persistência de dados com volumes
  • Gerenciamento de configuração com variáveis de ambiente em .env
  • Suporte a arquiteturas complexas de microsserviços

Depois de se familiarizar com Docker e Compose, o tempo de configuração do ambiente é drasticamente reduzido,
melhorando significativamente a eficiência do desenvolvimento.

7. Considerações de Segurança e Operacionais

O Docker é uma ferramenta extremamente poderosa e prática, mas “estar containerizado” não significa automaticamente “estar seguro”.
Ao usar o Docker regularmente no Ubuntu, há vários pontos importantes de segurança e operação que você deve entender.

Esta seção organiza o conhecimento essencial para operar o Docker de forma segura e estável, de maneira fácil de compreender mesmo para iniciantes.

7-1. O Grupo docker Possui Privilégios “Praticamente de Root”

O grupo docker configurado anteriormente concede privilégios muito fortes.
Usuários pertencentes ao grupo docker podem operar o sistema host via o socket do Docker, o que equivale, na prática, a acesso de nível root.

● Pontos‑Chave a Serem Observados

  • Não adicione usuários arbitrários ao grupo docker em servidores compartilhados
  • Entenda as implicações, não apenas a conveniência de “não precisar de sudo”
  • Em organizações com políticas de segurança rigorosas, pode ser necessário obter aprovação do administrador

Isso raramente é um problema em máquinas Ubuntu pessoais ou PCs de desenvolvimento, mas é necessário julgamento cuidadoso em servidores de produção.

7-2. Considerando o Docker sem root (Opção avançada)

O Docker oferece um recurso chamado modo sem root, que permite que o daemon do Docker seja executado sob uma conta de usuário comum em vez de root.

Vantagens:

  • Reduz significativamente o risco de privilégios do sistema operacional host
  • Permite o uso mais seguro do Docker em ambientes com requisitos de segurança rigorosos

Desvantagens:

  • Alguns recursos de rede são restritos
  • A configuração é mais complexa para iniciantes
  • O comportamento pode diferir do Docker padrão

O modo sem root não é necessário para a maioria dos casos de uso em desenvolvimento, mas pode ser uma opção viável em ambientes corporativos ou focados em conformidade.

7-3. Limpeza de Imagens e Contêineres Não Utilizados

Com o tempo, o Docker pode consumir uma grande quantidade de espaço em disco sem que você perceba. Contêineres, imagens e volumes não utilizados podem se acumular e facilmente ultrapassar 100 GB.

● Comandos para remover recursos não utilizados

Removendo imagens não utilizadas

docker image prune

Removendo contêineres e redes juntos

docker system prune

Limpeza agressiva (use com cautela)

docker system prune -a

A opção -a remove todas as imagens não utilizadas, portanto use-a com cuidado.

7-4. Evite usar a tag “latest” em produção

Embora tags como nginx:latest sejam convenientes durante o desenvolvimento, elas não são recomendadas para uso em produção.

Razões:

  • A versão exata por trás de latest não é garantida
  • Atualizações inesperadas podem causar falhas em tempo de execução
  • A perda de reprodutibilidade leva a implantações instáveis

Abordagem recomendada: Fixar versões explicitamente

Exemplo:

image: nginx:1.25

Versionamento explícito é uma regra fundamental para ambientes de produção.

7-5. Use imagens base oficiais em Dockerfiles

Ao criar Dockerfiles, siga estas diretrizes:

  • Prefira imagens oficiais (imagens de biblioteca)
  • Evite imagens mantidas por autores desconhecidos ou não confiáveis
  • Ao usar imagens de SO leves, como Alpine, verifique o status de suporte a vulnerabilidades

Imagens não confiáveis podem conter malware. Mesmo em ambientes de desenvolvimento, evite-as sempre que possível.

7-6. Tenha cuidado com a exposição de rede e portas

Quando os contêineres expõem portas no SO host, eles podem se tornar acessíveis a partir de fora do sistema.

Precauções:

  • Evite mapeamentos desnecessários -p 80:80
  • Para uso local, vincule apenas ao localhost, por exemplo -p 127.0.0.1:8080:80
  • Combine com configurações de firewall como UFW
  • Para produção, use um proxy reverso (como Nginx) para maior segurança

O gerenciamento de portas é especialmente crítico em servidores Ubuntu VPS ou baseados em nuvem.

7-7. Gerenciamento de logs durante falhas

Os logs do Docker podem ser visualizados com o seguinte comando:

docker logs <container-name>

Grandes volumes de logs podem consumir espaço em disco rapidamente, portanto considere configurar drivers de log e rotação de logs.

8. Problemas comuns e solução de problemas

Embora o Docker seja uma ferramenta poderosa, erros inesperados podem ocorrer no Ubuntu devido a diferenças de ambiente ou erros de configuração. Esta seção resume problemas comuns e suas soluções, do nível iniciante ao intermediário.

8-1. Não é possível conectar ao daemon do Docker

● Mensagem de erro

Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

● Causas e soluções

  1. O daemon do Docker não está em execução: sudo systemctl start docker
  2. Alterações no grupo docker não foram aplicadas faça logout e login novamente, ou execute newgrp docker
  3. Problema de permissão com /var/run/docker.sock: garanta que o usuário pertença ao grupo docker

8-2. Erros de Permissão Negada

● Erro típico

Got permission denied while trying to connect to the Docker daemon socket

● Solução

A causa é quase sempre a falta de configuração do grupo docker.

sudo usermod -aG docker $USER

Em seguida, faça logout e login novamente.

8-3. Erros GPG ao adicionar o repositório APT

● Exemplos de erro

NO_PUBKEY XXXXXXXX

ou

The following signatures couldn't be verified

● Causas e correções

  • A chave GPG não foi registrada corretamente
  • curl falhou devido a restrições de rede

Re-registre a chave com:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
 | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Em seguida, execute sudo apt update novamente.

8-4. Conflitos de Bind de Porta

● Exemplo de erro

Bind for 0.0.0.0:80 failed: port is already allocated.

● Causa

  • A porta já está sendo usada por outro processo no host
  • Outro contêiner Docker está usando a mesma porta

● Soluções

Verifique qual processo está usando a porta:

sudo lsof -i -P -n | grep :80

Verifique os contêineres em execução:

docker ps

Altere o mapeamento de porta:

-p 8080:80

8-5. Falhas no Download de Imagens

● Causas comuns

  • Restrições de rede (ambientes corporativos)
  • Problemas de configuração de DNS
  • Acesso bloqueado ao Docker Hub

● Soluções

  • Alterar servidores DNS (ex.: 1.1.1.1 ou 8.8.8.8)
  • Verificar a configuração de proxy
  • Usar uma VPN se exigido pelo ambiente

8-6. Erros de Exaustão de Espaço em Disco

● Mensagem típica

no space left on device

● Resolução

Remova recursos não utilizados:

docker system prune -a

Revise imagens, contêineres e volumes:

docker images
docker ps -a
docker volume ls

A exaustão de espaço em disco é um dos problemas operacionais mais comuns do Docker.

年収訴求