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:

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:

  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:

  1. curl -fsSL: Baixa o arquivo de forma silenciosa (-s), sem erros (-f), e imprime o conteúdo diretamente (-L).
  2. 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:

  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

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:

  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

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:

  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.