Table of Contents

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 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:
    <code bash> MOUNTPOINT=/var/lib/docker DISKDEVICE=/dev/vdb # Alterar conforme seu dispositivo echo -e “n\np\n1\n\n\nw” | sudo fdisk ${DISK_DEVICE} </code>
  2. Formate a partição recém-criada como ext4:
sudo mkfs.ext4 ${DISK_DEVICE}1
  1. 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}
  1. 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:

  1. apt-transport-https: Necessário para permitir que o apt acesse repositórios via HTTPS.
  2. ca-certificates: Instala os certificados de CA (Certificate Authority), que validam a comunicação segura com servidores HTTPS.
  3. curl: Ferramenta de linha de comando para transferir dados usando vários protocolos, incluindo o download de chaves GPG.
  4. gnupg: Conjunto de ferramentas para gerenciamento de chaves criptográficas.
  5. 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:

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:

  1. dpkg –print-architecture: Retorna a arquitetura do sistema (por exemplo, amd64), garantindo que você baixe a versão correta.
  2. 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.
  3. 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:

  1. docker-ce: Docker Community Edition, a versão estável e gratuita do Docker.
  2. docker-ce-cli: Ferramentas de linha de comando para interagir com o Docker.
  3. containerd.io: Serviço para gerenciar containers em segundo plano.
  4. 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:

  1. usermod -aG docker $USER: Adiciona o usuário atual ($USER) ao grupo docker, preservando os grupos atuais do usuário.
  2. 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
  1. 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.

  1. 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:

  1. “ipv6”: true: Habilita o suporte a IPv6 no Docker.
  2. “ip6tables”: true: Permite o uso de ip6tables para filtrar pacotes IPv6.
  3. “experimental”: true: Ativa recursos experimentais no Docker.
  4. “fixed-cidr-v6”: “fd00::/64”: Define uma faixa fixa de endereços IPv6 para uso pelos containers.
  5. “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
  1. 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.

  1. 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:

  1. –subnet: Define a faixa de endereçamento da rede para IPv4 e IPv6.
  2. –gateway: Especifica o gateway para ambas as redes (IPv4 e IPv6).
  3. –ipv6: Habilita o suporte a IPv6 na nova rede.
  4. 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.