- 1 1. Introdução
- 2 2. Pré‑requisitos e Preparação
- 2.1 2-1. Versões do Ubuntu Suportadas
- 2.2 2-2. Pacotes Docker Pré‑instalados
- 2.3 2-3. Updating APT and Installing Required Packages
- 2.4 2-3. Atualizando o APT e Instalando Pacotes Necessários
- 2.5 2-4. Verifying Administrator Privileges (sudo)
- 2.6 2-4. Verificando Privilégios de Administrador (sudo)
- 2.7 2-5. Checking Network Connectivity
- 2.8 2-5. Verificando a Conectividade de Rede
- 2.9 2-6. Choosing the Installation Method
- 2.10 2-6. Escolhendo o Método de Instalação
- 3 3. Installing Docker
- 4 3. Instalando o Docker
- 4.1 3-1. Adding the Official Docker Repository (Recommended)
- 4.2 3-1. Adicionando o Repositório Oficial do Docker (Recomendado)
- 4.3 3-2. Installing Docker Engine
- 4.4 3-2. Instalando o Docker Engine
- 4.5 3-3. Verificando a Instalação
- 4.6 3-4. Opcional: Instalação via Script para Conveniência
- 4.7 3-5. Observações para as Últimas Versões do Ubuntu (ex.: 24.04)
- 5 4. Permissões de Usuário e Executando Docker sem sudo
- 6 5. Verificação de Inicialização e Operação
- 7 6. Instalando e Usando o Docker Compose
- 7.1 6-1. Verificando a Instalação do Docker Compose V2
- 7.2 6-2. Benefícios do Docker Compose
- 7.3 6-3. Estrutura Básica de um Arquivo de Configuração do Compose
- 7.4 6-4. Exemplo: Configuração Multi-Contêiner (Web + Banco de Dados)
- 7.5 6-5. Comandos Docker Compose Mais Usados
- 7.6 6-6. Casos de Uso Recomendados para o Compose no Desenvolvimento
- 8 7. Considerações de Segurança e Operacionais
- 8.1 7-1. O Grupo docker Possui Privilégios “Praticamente de Root”
- 8.2 ● Pontos‑Chave a Serem Observados
- 8.3 7-2. Considerando o Docker sem root (Opção avançada)
- 8.4 7-3. Limpeza de Imagens e Contêineres Não Utilizados
- 8.5 7-4. Evite usar a tag “latest” em produção
- 8.6 7-5. Use imagens base oficiais em Dockerfiles
- 8.7 7-6. Tenha cuidado com a exposição de rede e portas
- 8.8 7-7. Gerenciamento de logs durante falhas
- 9 8. Problemas comuns e solução de problemas
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
dockersemsudo - 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:
- Install via the official Docker repository (Recommended)
- Use the
get.docker.cominstallation script (Quick and easy) Manually download and install Docker .deb packages (Special cases)
Instalar via o repositório oficial do Docker (Recomendado)
- Usar o script de instalação
get.docker.com(Rápido e fácil) - 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--dearmorconverts the key into binary format/etc/apt/keyrings/é o local recomendado para armazenamento de chaves no Ubuntu 22.04 e posteriores--dearmorconverte 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 asjammyorfocal)Only the stable repository is added
$(. /etc/os-release && echo $VERSION_CODENAME)insere automaticamente o codinome correto do Ubuntu (comojammyoufocal)- 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_CODENAMEseja 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 runsemsudo - 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:
- Baixa a imagem do Docker Hub caso ela não esteja presente localmente
- Inicia um contêiner a partir da imagem
- 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_ongarante que o banco de dados seja iniciado antes da aplicaçãovolumespersiste 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:
| Command | Description |
|---|---|
docker compose up -d | Start containers in the background |
docker compose down | Stop and remove containers and networks |
docker compose build | Build images using Dockerfile |
docker compose ps | List containers managed by Compose |
docker compose logs -f | View 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
latestnã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
- O daemon do Docker não está em execução:
sudo systemctl start docker - Alterações no grupo docker não foram aplicadas faça logout e login novamente, ou execute
newgrp docker - 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.


