Curso
A instalação do Docker no Debian não deve exigir adivinhar qual método não vai danificar o sistema.
A maioria dos guias apresenta várias opções de instalação sem explicar quando usar cada uma delas. Você acaba com pacotes desatualizados do repositório do Debian ou, pior ainda, com erros de permissão que impedem você de acessar seus próprios contêineres. O que rolou? Você passa horas resolvendo problemas em vez de instalar aplicativos.
O ciclo de lançamento previsível e a estabilidade sólida do Debian o tornam perfeito para implantações do Docker em produção. Você tem um desempenho consistente dos contêineres, sem atualizações de sistema inesperadas que podem bagunçar sua configuração. Na teoria, você não deve ter problemas depois da parte complicada: a instalação.
Neste tutorial, vou te mostrar quatro métodos de instalação, como deixar o sistema mais seguro, configurar o armazenamento e resolver problemas para que o Docker funcione direitinho no Debian.
Você nunca ouviu falar do Docker? Comece com os fundamentos do Docker antes de seguir as etapas de instalação.
Requisitos do sistema
O Docker rola na maioria dos sistemas Debian modernos, mas você precisa marcar algumas opções primeiro. Nesta seção, vou mostrar os requisitos exatos do sistema antes de você começar a instalação.
É preciso ter o Debian 10 (Buster) ou mais recente para as versões atuais do Docker. Versões mais antigas, como o Debian 9, não vão funcionar com as compilações recentes do Docker Engine. A versão do seu kernel deve ser 3.10 ou superior - a maioria das instalações Debian dos últimos anos já cumpre esse requisito automaticamente.
Você precisa de acesso root ou privilégios sudo para instalar os pacotes Docker e configurar o sistema. O Docker também precisa desses pacotes principais: apt-transport-https, ca-certificates, curl e gnupg. A maioria dos sistemas Debian já tem isso instalado, mas você vai verificar isso mais tarde.
Os requisitos de hardware são mínimos:
- 2 GB de RAM pra lidar com cargas de trabalho básicas de contêineres, mas 4 GB ou mais funcionam melhor pra ambientes de desenvolvimento.
- 10 GB de espaço livre em disco é o mínimo para imagens Docker e dados de contêineres. As configurações de produção devem ser planejadas com muito mais cuidado.
Se você estiver usando o ambiente de trabalho GNOME, certifique-se de que o pacote gnome-terminal está instalado. Algumas ferramentas de gerenciamento do Docker esperam isso para sessões interativas de contêineres.
Tira todas as instalações antigas do Docker antes de começar. Pacotes antigos como docker, docker.io ou docker-engine podem entrar em conflito com o Docker Engine atual. Execute este comando para limpar as versões antigas:
sudo apt remove docker docker-engine docker.io containerd runc
A configuração do seu firewall e da sua rede pode afetar a rede dos contêineres. O Docker cria suas próprias interfaces de rede e regras iptables. Se você estiver usando o UFW ou regras de firewall personalizadas, talvez seja necessário ajustá-las após a instalação para permitir o tráfego do contêiner.
Dá uma olhada nesses requisitos agora mesmo - isso vai te poupar tempo de solução de problemas depois.
Como instalar
Você tem quatro maneiras de instalar o Docker no Debian, cada uma com suas vantagens e desvantagens. Vou te ajudar a escolher o método que melhor se adapta ao seu ambiente e aos seus requisitos de segurança.
Procurando instruções de instalação do Ubuntu? Temos um guia passo a passo completo para instalar o Docker no Ubuntu.
Método 1: Repositório oficial do Docker (recomendado)
Esse método te dá a versão mais recente do Docker com atualizações de segurança regulares.
O repositório oficial do Docker sempre tem as versões estáveis mais recentes, além disso, você recebe atualizações automáticas pelo seu gerenciador de pacotes. Você não vai ficar preso a versões antigas que não têm patches de segurança importantes ou novos recursos.
Comece atualizando seu sistema e instalando os pacotes que o Docker precisa:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
Depois, adicione a chave GPG oficial do Docker para verificar a autenticidade do pacote:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Configure o repositório adicionando-o à sua lista de fontes:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Por fim, instale o Docker Engine, a CLI e o Compose:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Isso te dá tudo que você precisa pra implantações do Docker em produção.
Método 2: Repositório Debian padrão
Essa abordagem instala o Docker com um comando, mas você vai ter uma versão mais antiga.
O repositório padrão do Debian facilita a instalação - basta executar sudo apt install docker.io. Mas tem um porém: muitas vezes você vai pegar versões do Docker que estão meses ou anos atrasadas em relação à versão atual.
sudo apt update
sudo apt install docker.io
Esse método funciona bem pra testes básicos ou quando você precisa de uma versão mais antiga específica por causa da compatibilidade. Mas você vai perder as atualizações de segurança, melhorias de desempenho e novos recursos que vêm com as versões mais recentes do Docker.
Só use esse método se o repositório oficial não estiver disponível.
Método 3: Instalação manual do pacote DEB
Vou te mostrar como baixar e instalar pacotes direto quando você não conseguir acessar os repositórios.
Esse método funciona para sistemas isolados, redes corporativas com acesso restrito à Internet ou quando você precisa instalar a mesma versão do Docker em várias máquinas sem precisar fazer o download várias vezes.
Baixe os pacotes DEB no site do Docker:
-
Vá para
https://download.docker.com/linux/debian/dists/ -
Escolha sua versão do Debian (bullseye, bookworm, etc.)
-
Vá até
pool/stable/amd64/ -
Baixe esses pacotes:
docker-ce_*.deb,docker-ce-cli_*.debecontainerd.io_*.deb
Instale os pacotes na seguinte ordem:
sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb
Se você receber erros de dependência, execute sudo apt-get install -f para corrigi-los.
Esse método exige mais trabalho manual para atualizações, mas dá a você controle total sobre qual versão vai ser instalada.
Método 4: Scripts de conveniência
O último método que vou falar é rápido pra instalar em ambientes de teste, mas é melhor dar uma olhada no script antes.
O Docker tem scripts de instalação que reconhecem o seu sistema e instalam o Docker automaticamente. Eles são úteis pra montar ambientes de teste rapidinho ou quando você tá configurando o Docker em vários sistemas.
curl -fsSL https://get.docker.com -o get-docker.sh
Sempre dê uma olhada no script antes de rodar:
cat get-docker.sh
Fica de olho em qualquer coisa estranha ou que você não esperava. O script vai mexer na configuração do seu sistema, então é bom você saber o que ele está fazendo.
Depois de conferir o script, é só rodar:
sudo sh get-docker.sh
Não use scripts de conveniência na produção. Eles foram feitos pra ser rápidos de configurar, não pra serem seguros ou fáceis de usar de novo. Fica com o método do repositório oficial para sistemas importantes.
Recomendo escolher o método do repositório oficial, a menos que você tenha restrições específicas que exijam uma abordagem diferente.
Verificando sua instalação
A instalação é só o primeiro passo — você precisa confirmar se o Docker tá mesmo funcionando antes de implantar qualquer coisa. Esses testes rápidos vão te dizer se a sua configuração do Docker está pronta pra cargas de trabalho reais.
Dá uma olhada na tua versão do Docker para ver se a instalação deu certo:
docker --version
Você deve ver uma saída como Docker version xx.x.x, build x. Se você receber um erro “comando não encontrado”, o Docker não foi instalado corretamente ou não está no seu PATH.
Veja informações detalhadas sobre a compilação para ver quais componentes estão em execução:
docker version
Isso mostra as versões separadas do cliente e do servidor, além de detalhes da arquitetura. A seção do servidor confirma que o daemon do Docker está funcionando e acessível.
Execute um contêiner de teste para ver se tudo tá funcionando direitinho:
docker run hello-world
O Docker vai baixar a imagem hello-world e executá-la. Você vai ver uma mensagem explicando como os contêineres Docker funcionam se tudo estiver certo. Esse teste mostra que o Docker consegue pegar imagens, criar contêineres e rodar comandos.
Você pode verificar se o Docker Compose está instalado e se está funcionando:
docker compose version
Você deve ver uma saída como Docker Compose version vX.xx.x. Observe que as instalações mais recentes do Docker usam docker compose (com um espaço) em vez do comando antigo docker-compose.
Se todos esses comandos funcionarem sem erros, sua instalação do Docker está pronta para uso em produção.
Pronto pra rodar seu primeiro contêiner de verdade? Aprenda a rodar imagens do Docker passo a passo.
Configuração pós-instalação
O Docker já funciona assim que você instala, mas é bom configurar algumas coisas pra usar no dia a dia. Nesta seção, vou falar sobre gerenciamento de serviços e permissões de usuário que tornam o Docker mais prático e seguro.
Gerenciamento de serviços
Você pode controlar quando o Docker é executado com estes comandos do systemd:
sudo systemctl start docker # Start Docker
sudo systemctl stop docker # Stop Docker
sudo systemctl restart docker # Restart Docker service
Para habilitar o Docker para iniciar automaticamente quando o sistema for inicializado, execute o seguinte:
sudo systemctl enable docker
Isso garante que o Docker seja executado sempre que você reiniciar o servidor, que é o que você quer para sistemas de produção.
Se você precisar verificar se o Docker está funcionando e ver seu status atual, execute este comando:
sudo systemctl status docker
Você vai ver se o serviço tá ligado, há quanto tempo tá funcionando e se tem alguma mensagem recente no log. Se o Docker não estiver funcionando, esse comando geralmente mostra o motivo.
Para resolver problemas de serviço, dá uma olhada nos registros:
sudo journalctl -u docker.service
Isso mostra os logs detalhados do daemon do Docker, que ajudam a diagnosticar problemas de inicialização, erros de permissão ou problemas de configuração.
Acesso de usuários que não são root
Se você precisar adicionar seu usuário ao grupo docker para rodar comandos do Docker sem o sudo:
sudo usermod -aG docker $USER
Isso adiciona o usuário atual ao grupo “ docker ”, que te dá permissão para se comunicar com o daemon do Docker.
Depois, você vai precisar sair e entrar de novo para que a mudança de grupo comece a valer:
logout
Ou então, reinicie a sessão do terminal. Você também pode rodar newgrp docker para ativar o grupo na sua sessão atual sem precisar sair.
Por fim, pra testar o acesso não root, dá uma olhada nesse comando do Docker:
docker run hello-world
Se isso funcionar sem o sudo, tá tudo certo.
Mas aqui está a desvantagem em termos de segurança: Os usuários do grupo docker têm acesso equivalente ao root no seu sistema. Eles podem montar diretórios do host, acessar arquivos confidenciais e, potencialmente, escapar dos contêineres para comprometer o host.
Adicione só usuários de confiança ao grupo docker e nunca faça isso em sistemas compartilhados onde você não controla todos os usuários.
Configure essas opções uma vez e o Docker vai ficar bem mais fácil de usar no dia a dia.
Como configurar o driver de armazenamento
O driver de armazenamento do Docker cuida de como as imagens e os dados dos contêineres ficam guardados no seu sistema. A maioria dos usuários nunca precisa mudar isso, mas entender suas opções ajuda a otimizar o desempenho para tarefas específicas.
O Docker escolhe automaticamente o melhor driver de armazenamento para o seu sistema durante a instalação. No Debian, geralmente é overlay2, que tem um desempenho e estabilidade excelentes pra maioria dos casos.
Dá uma olhada no driver de armazenamento atual com esse comando:
docker info | grep "Storage Driver"
O driver overlay2 funciona bem porque:
- Lida com operações de cópia na gravação de forma rápida quando os contêineres modificam arquivos
- Compartilha camadas entre imagens para economizar espaço no disco
- Suporta todos os recursos do Docker sem problemas de compatibilidade
- Funciona de forma confiável em diferentes tipos de sistemas de arquivos
Você pode precisar de um driver de armazenamento diferente se estiver executando cargas de trabalho especializadas ou tiver requisitos específicos do sistema de arquivos.
Por exemplo, alguns sistemas de armazenamento empresarial funcionam melhor com o driver devicemapper, ou você pode precisar de vfs para depurar problemas no sistema de arquivos do contêiner.
Você pode alterar o driver de armazenamento editando a configuração do daemon do Docker:
sudo nano /etc/docker/daemon.json
Aqui, adicione ou modifique a configuração do driver de armazenamento:
{
"storage-driver": "devicemapper"
}
Por fim, não esquece de reiniciar o Docker pra aplicar a mudança:
sudo systemctl restart docker
Só fica a dica que mudar os drivers de armazenamento vai deixar seus contêineres e imagens existentes inacessíveis. Faça um backup dos dados importantes primeiro ou exporte os contêineres que você quer guardar.
Agora você pode testar o novo driver puxando uma imagem e executando um contêiner:
docker pull hello-world
docker run hello-world
Resumindo, fique com o overlay2, a menos que você tenha requisitos específicos que precisem de um driver diferente.
Reforço da segurança
As instalações padrão do Docker funcionam bem para desenvolvimento, mas os ambientes de produção precisam de camadas de segurança adicionais. Essas configurações protegem seu sistema host contra invasões de contêineres e ataques de esgotamento de recursos.
Integração SELinux/AppArmor
Os controles de acesso obrigatórios adicionam uma camada de segurança que limita o que os contêineres podem fazer, mesmo que sejam comprometidos. Sem esses controles, um contêiner rodando como root pode acessar recursos do host que não deveria.
Você pode ativar o AppArmor para o Docker, que é a estrutura de segurança padrão do Debian, executando estes comandos:
sudo apt install apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor
Depois que o AppArmor estiver rodando, carregue o perfil de segurança do Docker:
sudo apparmor_parser -r /etc/apparmor.d/docker
Agora você pode rodar contêineres com a proteção AppArmor ativada:
docker run --security-opt apparmor=docker-default nginx
O perfil docker-default limita as capacidades do contêiner, como montar sistemas de arquivos, acessar interfaces de rede brutas e carregar módulos do kernel.
Para sistemas SELinux (se você estiver usando em vez do AppArmor), primeiro habilite o gerenciamento de contêineres:
sudo setsebool -P container_manage_cgroup on
Depois, execute os contêineres com rótulos SELinux:
docker run --security-opt label=type:container_t nginx
Esses controles bloqueiam muitas técnicas comuns de fuga de contêineres e limitam os danos causados por contêineres comprometidos.
Configuração do Daemon
Você pode (e deve) personalizar as configurações do daemon do Docker para reduzir a superfície de ataque e melhorar a postura de segurança. Crie ou edite o arquivo “ /etc/docker/daemon.json ”:
{
"live-restore": true,
"userland-proxy": false,
"no-new-privileges": true,
"icc": false,
"disable-legacy-registry": true
}
Aqui está o que cada configuração faz:
-
live-restore: truemantém os contêineres funcionando se o daemon do Docker travar -
userland-proxy: falseusa o iptables direto, em vez do proxy do espaço do usuário, pra ter um desempenho melhor -
no-new-privileges: trueimpede que os contêineres ganhem novos privilégios -
icc: falsedesativa a comunicação entre contêineres por padrãodisable-legacy-registry: truebloqueia o acesso a protocolos de registro antigos e inseguros
Depois de fazer essas mudanças, reinicie o Docker para aplicá-las:
sudo systemctl restart docker
Você também deve rodar contêineres como usuários não root sempre que possível:
docker run --user 1000:1000 nginx
Isso limita o que os contêineres comprometidos podem fazer no seu sistema.
Limites de recursos com grupos de controle (cgroups)
Os contêineres sem limites de recursos podem usar toda a CPU, memória e E/S disponíveis e, no final das contas, derrubar todo o sistema host. Grupos de controle (cgroups) evitam isso impondo limites rígidos ao uso de recursos.
Comece com limites de memória para evitar que os contêineres usem RAM em excesso:
docker run --memory=512m nginx
Você também pode limitar o uso da CPU pra evitar que um contêiner monopolize a potência de processamento:
docker run --cpus=1.5 nginx
Para sistemas com muita entrada/saída de disco, controla a velocidade de leitura/gravação:
docker run --device-read-bps /dev/sda:1mb nginx
Você também pode juntar vários limites pra ter controle total dos recursos:
docker run \
--memory=1g \
--cpus=2 \
--pids-limit=100 \
nginx
Para ter limites consistentes em todos os contêineres, configure os padrões no seu daemon.json:
{
"default-ulimits": {
"nofile": {
"Hard": 64000,
"Name": "nofile",
"Soft": 64000
}
}
}
Esses limites evitam ataques de esgotamento de recursos e garantem que os recursos sejam divididos de forma justa entre os contêineres.
Configure essas medidas de segurança uma vez e seu ambiente Docker vai ficar bem mais difícil de ser comprometido.
Precisa dominar os comandos do Docker para o gerenciamento diário? Esses 18 comandos essenciais do Docker vão te ajudar a ser mais produtivo.
Resolução de problemas comuns
Mesmo com a instalação certa, o Docker pode ter uns problemas que impedem os contêineres de funcionarem direitinho. Aqui estão os problemas mais comuns e como resolvê-los rapidamente.
Erros de permissão
A maioria dos problemas de permissão do Docker é porque o usuário não tem acesso certo ao arquivo de soquete do Docker. Quando você vê “ Got permission denied while trying to connect to the Docker daemon socket ”, significa que você ainda não está no grupo docker.
Isso rola porque o Docker roda como root, mas cria um socket que os membros do grupo docker podem acessar. Junta-te ao grupo:
sudo usermod -aG docker $USER
Você precisa sair e entrar de novo para que a mudança apareça. Se você não quer sair agora, pode ativar o grupo na sua sessão atual:
newgrp docker
Erros de permissão de arquivos dentro de contêineres são diferentes, mas igualmente comuns. Isso rola quando o processo do contêiner não consegue ler ou gravar arquivos que você montou no sistema host. O contêiner pode estar rodando com um ID de usuário diferente do dono dos seus arquivos.
Dá uma olhada em quem é o dono dos seus arquivos:
ls -la /path/to/your/files
A maioria dos contêineres Docker rola com o ID de usuário 1000 por padrão. Se seus arquivos pertencem ao root ou a um usuário diferente, mude a propriedade:
sudo chown -R 1000:1000 /path/to/your/files
Se você estiver usando o SELinux (em vez do AppArmor), pode ver diferentes recusas de permissão nos logs de auditoria. Esses são mais complicados porque o SELinux controla quais processos podem acessar com base em contextos de segurança, não só em IDs de usuário.
Procure por violações de acesso recentes:
sudo ausearch -m avc -ts recent
Corrigir os ativando o gerenciamento de contêineres e restaurando as etiquetas certas para os volumes do Docker:
sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volume
Falhas no serviço
Quando o Docker não inicia ou fica travando, você precisa entender o que está dando errado antes de consertar. O status do serviço systemd dá uma visão geral rápida:
sudo systemctl status docker
Isso mostra se o Docker está funcionando e exibe qualquer mensagem de erro recente. Mas, pra resolver problemas mais detalhados, é melhor dar uma olhada nos logs ao vivo enquanto o Docker tenta iniciar:
sudo journalctl -u docker.service -f
Um erro comum na inicialização rola quando o Docker não foi desligado direito. Você vai ver um erro tipo “falha ao iniciar o daemon: arquivo pid encontrado, veja se o docker não está rodando”. Isso quer dizer que tem um arquivo de processo sobrando que tá confundindo o script de inicialização.
Tira o arquivo velho e tenta de novo:
sudo rm /var/run/docker.pid
sudo systemctl start docker
Problemas de armazenamento são outra causa frequente de falhas no daemon. O Docker guarda todos os seus dados em /var/lib/docker e, se esse diretório ficar sem espaço ou corrompido, o Docker não vai conseguir começar direito.
Dá uma olhada em quanto espaço tem disponível:
df -h /var/lib/docker
Se você tá com pouco espaço, dá uma limpada nos contêineres e imagens antigos que você não tá usando:
docker system prune -a
Conflitos de rede também podem impedir o Docker de iniciar. Isso rola quando a rede bridge padrão do Docker (normalmente 172.17.0.0/16) entra em conflito com a configuração da sua rede. Você vai ver erros sobre intervalos de endereços indisponíveis.
Resolva isso configurando um IP de ponte personalizado que não entre em conflito com a sua rede. Editar /etc/docker/daemon.json:
{
"bip": "192.168.1.1/24"
}
Depois de fazer a alteração, reinicie o Docker para usar a nova configuração de rede:
sudo systemctl restart docker
Problemas com kernel desatualizado
O Docker depende dos recursos do kernel Linux para a conteinerização, rede e segurança. Se o seu kernel estiver muito antigo, você vai ter problemas que não podem ser resolvidos sem atualizar.
Dá uma olhada em qual versão do kernel você tá usando com esse comando:
uname -r
O Docker precisa de pelo menos o kernel 3.10 para funcionar direitinho, mas é melhor usar o 4.0 ou mais recente se for usar em produção. Qualquer versão anterior à 3.10 simplesmente não vai funcionar com as versões modernas do Docker.
Atualizar o kernel no Debian é fácil, basta instalar o pacote do kernel mais recente:
sudo apt update
sudo apt install linux-image-amd64
O novo kernel só vai funcionar depois que você reiniciar o sistema:
sudo reboot
Às vezes, o kernel é novo o suficiente, mas alguns módulos do kernel não estão carregados. O Docker precisa de módulos específicos para recursos de rede e conteinerização. Você vai ver erros sobre interfaces de rede não disponíveis ou contêineres que não estão iniciando corretamente.
Carregue os módulos essenciais manualmente:
sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_nat
Esses módulos devem carregar automaticamente, mas se isso não acontecer, torne-os permanentes adicionando-os à configuração do seu sistema:
echo "bridge" | sudo tee -a /etc/modules
echo "ip_tables" | sudo tee -a /etc/modules
echo "iptable_nat" | sudo tee -a /etc/modules
Mesmo com um kernel recente, você pode encontrar erros de tempo de execução do contêiner que dizem “operação não suportada”. Isso geralmente quer dizer que o seu kernel foi compilado sem algumas funcionalidades que o Docker espera. Infelizmente, não tem como contornar a falta de recursos do kernel — você precisa de um kernel configurado corretamente.
A maioria dos problemas de instalação do Docker vem dessas três áreas: permissões do usuário, configuração do serviço ou compatibilidade do kernel. Resolva o problema de verdade em vez de só tentar contornar os sintomas, e seu ambiente Docker vai ficar bem mais estável.
Trabalhando com bancos de dados em contêineres? A configuração do PostgreSQL no Docker é mais fácil do que você imagina.
Desinstalando o Docker
Às vezes, você precisa tirar completamente o Docker do seu sistema, seja porque está mudando para um runtime de contêiner diferente ou recomeçando do zero depois de problemas de configuração.
Esse processo não é só tirar os pacotes - você também vai querer limpar os dados e as mudanças no sistema.
Comece removendo todos os pacotes Docker do seu sistema. O comando exato depende de como você instalou o Docker originalmente.
Se você instalou a partir do repositório oficial do Docker:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
Se você instalou a partir do repositório padrão do Debian:
sudo apt purge docker.io docker-compose
Isso tira os pacotes, mas deixa os arquivos de configuração e dependências que outros pacotes ainda podem precisar. Para remover esses também:
sudo apt autoremove --purge
Depois, apaga o diretório de dados do Docker se quiseres remover todas as imagens, contêineres e volumes. Esse passo é opcional, mas recomendado para uma limpeza completa.
O Docker guarda tudo em /var/lib/docker por padrão. Se você tirar esse diretório, vai apagar todos os seus contêineres, imagens, redes e volumes pra sempre:
sudo rm -rf /var/lib/docker
Você também deve remover o diretório de configuração do Docker:
sudo rm -rf /etc/docker
Depois, limpe os grupos e usuários do sistema que o Docker criou durante a instalação. O Docker adiciona um grupo “ docker ” ao seu sistema e pode ter alterado as permissões do usuário.
Tira o grupo docker:
sudo groupdel docker
Se você adicionou usuários ao grupo docker, a participação deles no grupo vai ser automaticamente removida quando você excluir o grupo. Mas você também pode tirar manualmente usuários específicos do grupo antes de apagá-lo:
sudo gpasswd -d username docker
Depois, tire os arquivos de serviço do Docker no systemd e os arquivos de soquete:
sudo rm -f /lib/systemd/system/docker.service
sudo rm -f /lib/systemd/system/docker.socket
sudo systemctl daemon-reload
Por fim, confira se ainda tem processos do Docker que ainda possam estar em execução:
ps aux | grep docker
Se você encontrar algum, pare manualmente:
sudo pkill -f docker
Depois disso, o Docker deve estar completamente removido do seu sistema, sem nenhum arquivo ou configuração sobrando.
Pensando em alternativas ao Docker? Dá uma olhada em outras plataformas de contêineres antes de mudar.
Conclusão e melhores práticas
Agora você tem o Docker rodando no Debian, mas a instalação é só o começo. A forma como você configura e mantém seu ambiente Docker determina se você vai ter uma experiência de produção tranquila ou passar noites resolvendo problemas com contêineres.
Quer criar contêineres multiplataforma pra diferentes arquiteturas? O Docker Buildx facilita a criação de compilações multiplataforma.
Escolha o método de instalação de acordo com suas necessidades. O repositório oficial do Docker funciona melhor pra maioria dos ambientes de produção, porque você tem acesso aos recursos mais recentes e aos patches de segurança. Mas, se você estiver usando redes isoladas ou precisar manter as versões atualizadas, talvez seja melhor instalar o DEB manualmente.
Proteja seu ambiente Docker agora mesmo. Ative o AppArmor ou o SELinux para controles de acesso obrigatórios, configure as definições restritivas do daemon e use cgroups para limitar os recursos do contêiner. Mantenha o Docker atualizado com as atualizações de segurança automáticas, mas teste-as primeiro em um ambiente de teste.
Use o Docker Compose para aplicativos com vários contêineres. Em vez de lidar com comandos complexos do docker run, defina sua pilha de aplicativos em YAML.
Fica de olho no uso do disco e dá uma limpadinha de vez em quando. Execute docker system prune para remover imagens não utilizadas e configurar a rotação de logs para evitar que os contêineres encham seu disco.
Quando você precisar de mais detalhes, a documentação oficial fala sobre os assuntos mais avançadosque nãoestão aqui. Dá uma olhada na documentação do Docker pra saber mais sobre redes, driversde armazenamento e orquestração. A documentação do pacote Debian Docker explica as configurações específicas do pacote e os problemas conhecidos.
O Docker no Debian oferece uma plataforma estável e poderosa para aplicativos em contêineres, mas só se você configurar tudo direitinho e mantiver tudo atualizado.
Quer saber mais sobre o Docker, a conteinerização e como usar isso em ciência de dados e machine learning? Esses cursos da DataCamp são a sua melhor opção:
Perguntas frequentes
Qual é a melhor maneira de instalar o Docker no Debian para uso em produção?
O método oficial do repositório Docker é a melhor escolha para ambientes de produção, porque oferece as versões estáveis mais recentes com atualizações de segurança regulares. Esse método garante que você tenha todos os recursos mais recentes e patches importantes que podem não estar disponíveis nos repositórios padrão do Debian. Você também vai curtir as atualizações automáticas pelo gerenciador de pacotes, que mantém a instalação do Docker segura sem precisar mexer em nada.
Preciso me preocupar com segurança ao rodar o Docker no Debian?
Sim, a segurança do Docker precisa de uma configuração cuidadosa além da instalação básica. Os contêineres compartilham o kernel do host, então um contêiner comprometido pode acessar os recursos do host se não estiver bem isolado. Você deve ativar o AppArmor ou o SELinux para controles de acesso obrigatórios, configurar limites de recursos com cgroups e executar contêineres como usuários não root sempre que possível. Além disso, mantenha o Docker atualizado e evite adicionar usuários ao grupo docker, a menos que seja absolutamente necessário, pois isso concede acesso ao sistema equivalente ao root.
Posso rodar o Docker em versões mais antigas do Debian?
O Docker precisa do Debian 10 (Buster) ou mais recente pra funcionar com as versões atuais do Docker Engine. Versões mais antigas, como o Debian 9, não têm os recursos de kernel e as dependências de pacotes que o Docker moderno precisa. Se você está preso em uma versão mais antiga do Debian, vai precisar atualizar seu sistema primeiro, porque não tem uma solução confiável para a funcionalidade do kernel que falta e que o Docker precisa para a conteinerização e a rede.
Por que o Docker não inicia após a instalação e como faço para corrigir problemas com o daemon?
Falhas no daemon do Docker geralmente vêm de três coisas: problemas de armazenamento, conflitos de rede ou arquivos de processos que sobraram de instalações anteriores. Dá uma olhada se o arquivo “ /var/lib/docker ” tem espaço suficiente no disco usando “ df -h /var/lib/docker ” e, se precisar, dá uma limpada com “ docker system prune -a ”. Se rolar algum conflito de rede, o IP de ponte padrão do Docker (172.17.0.0/16) pode bater com a sua configuração de rede atual, e aí você vai precisar configurar um IP de ponte personalizado em /etc/docker/daemon.json. Se você vir erros do tipo “arquivo pid encontrado”, dá uma olhada no arquivo “ sudo rm /var/run/docker.pid ” e remove o arquivo velho. Depois, reinicie o serviço.
Como faço pra tirar o Docker e todos os seus dados do meu sistema Debian?
Pra tirar o Docker de vez, não basta só desinstalar os pacotes — você precisa limpar os diretórios de dados, grupos do sistema e arquivos de serviço. Comece limpando os pacotes do Docker com sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin e, em seguida, remova o diretório de dados com sudo rm -rf /var/lib/docker (isso exclui permanentemente todos os contêineres e imagens). Apaga o grupo docker com “ sudo groupdel docker ”, tira os arquivos de serviço do systemd e vê se ainda tem algum processo do Docker com “ ps aux | grep docker ”. Isso garante que você comece do zero se precisar reinstalar ou mudar para um runtime de contêiner diferente.


