====== Instalação do Docker no Debian 12 ====== ===== Introdução ===== Este tutorial descreve os passos necessários para instalar o Docker no Debian de forma prática e personalizada, incluindo a configuração de partições, instalação de dependências e alteração da rede com suporte a IPv6. Ao seguir este guia, você estará preparado para utilizar o Docker em diferentes cenários, ajustando a instalação conforme suas necessidades. Clique no link para saber mais sobre o Docker [[https://geanmartins.com.br/posts/artigo-introducao-docker/|Introdução ao Docker: Conceitos e Arquitetura]]. ===== Criando uma Partição para os Containers ===== Se você está instalando o Docker em um ambiente virtualizado, como KVM, o disco pode ter uma nomeclatura diferente, como ''/dev/vdb''. Caso esteja utilizando um sistema físico, o dispositivo pode ser diferente, como ''/dev/sda''. Este passo é opcional, mas útil quando você deseja separar os dados dos containers em um disco dedicado. **Passos:** 1. Crie uma nova partição no disco de destino: MOUNT_POINT=/var/lib/docker DISK_DEVICE=/dev/vdb # Alterar conforme seu dispositivo echo -e "n\np\n1\n\n\nw" | sudo fdisk ${DISK_DEVICE} 2. Formate a partição recém-criada como ext4: sudo mkfs.ext4 ${DISK_DEVICE}1 3. Monte o disco na pasta de containers do Docker: UUID=$(sudo blkid -o export ${DISK_DEVICE}1 | grep UUID | grep -v PARTUUID) sudo mkdir -p ${MOUNT_POINT} sudo cp -p /etc/fstab{,.dist} echo "${UUID} ${MOUNT_POINT} ext4 defaults 1 2" | sudo tee -a /etc/fstab sudo mount ${MOUNT_POINT} 4. Verifique se o disco foi montado corretamente: df -hT | grep docker FIXME Certifique-se de que o UUID da partição está correto e que o ponto de montagem está acessível. ===== Instalação do Docker ===== ==== Atualizando os Pacotes do Sistema ==== Antes de instalar o Docker, é fundamental garantir que seu sistema esteja atualizado. Execute os seguintes comandos para atualizar os pacotes: sudo apt update sudo apt upgrade Isso garantirá que você tenha as versões mais recentes de todos os pacotes e dependências necessárias para a instalação do Docker. ==== Instalando Dependências ==== Para que o Docker funcione corretamente no Debian, você precisará instalar algumas dependências essenciais. Elas garantem que o sistema possa se comunicar com repositórios externos de maneira segura e reconheça os pacotes Docker. Execute o comando abaixo para instalar essas dependências: sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release **Explicação:** - ''apt-transport-https'': Necessário para permitir que o ''apt'' acesse repositórios via HTTPS. - ''ca-certificates'': Instala os certificados de CA (Certificate Authority), que validam a comunicação segura com servidores HTTPS. - ''curl'': Ferramenta de linha de comando para transferir dados usando vários protocolos, incluindo o download de chaves GPG. - ''gnupg'': Conjunto de ferramentas para gerenciamento de chaves criptográficas. - ''lsb-release'': Fornece informações sobre a distribuição do sistema, útil para garantir a compatibilidade dos pacotes. ==== Adicionando a Chave GPG e o Repositório Docker ==== A chave GPG oficial do Docker é necessária para garantir que os pacotes instalados a partir do repositório Docker sejam autênticos e não tenham sido modificados. Use o comando abaixo para adicionar a chave GPG oficial: curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg **Explicação:** - ''curl -fsSL'': Baixa o arquivo de forma silenciosa (-s), sem erros (-f), e imprime o conteúdo diretamente (-L). - ''gpg --dearmor'': Converte a chave GPG baixada no formato necessário para ser utilizada pelo sistema. ==== Adicionando o Repositório Docker ==== Agora que a chave GPG foi adicionada, precisamos configurar o repositório Docker no Debian, para garantir que sempre obteremos a versão mais recente e estável do Docker diretamente da fonte oficial. Adicione o repositório com o seguinte comando: 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 **Explicação:** - ''dpkg --print-architecture'': Retorna a arquitetura do sistema (por exemplo, amd64), garantindo que você baixe a versão correta. - ''lsb_release -cs'': Retorna o codinome da versão do Debian (ex: buster, bullseye), para configurar o repositório de acordo com sua versão. - ''signed-by'': Especifica o arquivo da chave GPG para garantir a autenticidade dos pacotes. Após adicionar o repositório, atualize a lista de pacotes com o novo repositório: sudo apt update ==== Instalando o Docker ==== Agora que as dependências e o repositório Docker estão configurados, você pode instalar o Docker e seus componentes principais. Execute o seguinte comando para realizar a instalação: sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin **Componentes Instalados:** - ''docker-ce'': Docker Community Edition, a versão estável e gratuita do Docker. - ''docker-ce-cli'': Ferramentas de linha de comando para interagir com o Docker. - ''containerd.io'': Serviço para gerenciar containers em segundo plano. - ''docker-compose-plugin'': Ferramenta para trabalhar com múltiplos containers usando arquivos YAML. ==== Adicionando o Usuário ao Grupo Docker ==== Para evitar ter que usar o comando ''sudo'' sempre que executar o Docker, você pode adicionar seu usuário ao grupo ''docker''. Isso permite que você execute comandos do Docker diretamente, sem precisar de permissões administrativas. Adicione seu usuário ao grupo com o comando: sudo usermod -aG docker $USER Após isso, é necessário sair da sessão e entrar novamente para que as alterações tenham efeito. Caso você não queira sair e entrar, pode aplicar a mudança imediatamente com o seguinte comando: newgrp docker **Explicação:** - ''usermod -aG docker $USER'': Adiciona o usuário atual (`$USER`) ao grupo `docker`, preservando os grupos atuais do usuário. - ''newgrp docker'': Atualiza a sessão atual para refletir as mudanças de grupos, sem a necessidade de reiniciar ou fazer logout/login. FIXME **Nota de Segurança:** Mesmo que isso simplifique o uso do Docker, adicionar usuários ao grupo `docker` pode representar um risco de segurança, pois quem faz parte deste grupo tem permissões equivalentes ao `root`. Para ambientes de produção, considere alternativas seguras. ==== Verificando a Instalação do Docker ==== Agora que o Docker está instalado, vamos garantir que ele esteja funcionando corretamente. Siga os passos abaixo para verificar a instalação: 1. **Verifique a versão do Docker:** Este comando exibe a versão do Docker que foi instalada, garantindo que o pacote foi instalado corretamente: docker --version 2. **Execute o contêiner de teste:** O contêiner `hello-world` é uma maneira rápida e fácil de testar se o Docker está funcionando conforme esperado. Execute o contêiner de teste com o comando: docker run hello-world Se a instalação estiver correta, você verá uma mensagem confirmando que o Docker foi instalado com sucesso e que o contêiner de teste foi executado. 3. **Verifique o status do serviço Docker (opcional):** Verifique se o serviço do Docker está rodando corretamente: sudo systemctl status docker Se todas as verificações passarem sem erros, o Docker foi instalado com sucesso e está pronto para ser usado. ===== Alterando a Rede Padrão do Docker e Habilitando o IPv6 ===== Se você precisa alterar a configuração de rede padrão do Docker e habilitar o suporte a IPv6, é possível fazer isso modificando o arquivo de configuração do Docker (''daemon.json''). Esta configuração permite definir endereços IPv6, redes personalizadas e faixas de endereçamento. **Passos para Configuração:** 1. **Modifique o arquivo `daemon.json`**: Para alterar as configurações de rede do Docker, edite ou crie o arquivo ''/etc/docker/daemon.json'' com o seguinte conteúdo: { "ipv6": true, "ip6tables": true, "experimental": true, "fixed-cidr-v6": "fd00::/64", "default-address-pools": [ {"base": "192.168.0.0/16", "size": 24}, {"base": "fd00::/56", "size": 64} ] } **Explicação:** - ''"ipv6": true'': Habilita o suporte a IPv6 no Docker. - ''"ip6tables": true'': Permite o uso de `ip6tables` para filtrar pacotes IPv6. - ''"experimental": true'': Ativa recursos experimentais no Docker. - ''"fixed-cidr-v6": "fd00::/64"'': Define uma faixa fixa de endereços IPv6 para uso pelos containers. - ''"default-address-pools"'': Define faixas de endereços para redes IPv4 e IPv6, que serão usadas ao criar redes Docker personalizadas. 2. **Reinicie o serviço Docker**: Após modificar o arquivo de configuração, é necessário reiniciar o serviço Docker para aplicar as mudanças: sudo systemctl restart docker 3. **Verifique a nova configuração de rede**: Para garantir que o Docker está usando a nova configuração de rede, execute o seguinte comando para listar as interfaces de rede: ip -br a s docker0 Isso indica que a interface `docker0` foi configurada com IPv4 e IPv6. 4. **Criando uma rede Docker personalizada com IPv6**: Agora você pode criar uma rede personalizada no Docker, definindo faixas de endereçamento IPv4 e IPv6: docker network create --subnet="192.168.1.0/24" --gateway="192.168.1.1" \ --subnet="fd00:0:0:1::/64" --gateway="fd00:0:0:1::1" --ipv6 zbx-network **Explicação:** - ''--subnet'': Define a faixa de endereçamento da rede para IPv4 e IPv6. - ''--gateway'': Especifica o gateway para ambas as redes (IPv4 e IPv6). - ''--ipv6'': Habilita o suporte a IPv6 na nova rede. - ''zbx-network'': Nome da rede Docker criada. FIXME A configuração de redes personalizadas e o uso de IPv6 são particularmente úteis em ambientes que requerem maior controle sobre a topologia de rede, como em clusters ou quando múltiplas redes precisam ser separadas. Para ambientes de produção, considere configurar regras adequadas de firewall e monitoramento de rede. ===== Conclusão ===== Este tutorial guiou você pela instalação do Docker no Debian, desde a criação de partições (opcional), atualização de pacotes, instalação de dependências, configuração do repositório Docker, até a alteração da rede padrão e suporte a IPv6 (opcional). Seguindo estes passos, você estará pronto para começar a usar o Docker em seu sistema.