====== 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.