Devido a problemas com portais cativos e o intervalo de IP padrão do Docker, estou tentando fazer com que o Docker use o intervalo 198.18.0.0, em vez de 172.17.0.0, que colide com os portais cativos usados nos trens onde moro.
Seguindo os docs , criei /etc/docker/daemon.json
, e coloquei o seguinte nele:
{
"bip":"198.18.0.0/16"
}
Isso funcionou para o docker0, mas parece não ter afetado nenhuma das outras redes, e usando o docker compose a primeira rede criada é 172.17.0.0, que recria o conflito.
O que posso fazer para alterar a sub-rede padrão para todas as redes docker (de preferência sem precisar declarar meu intervalo de IP personalizado em cada arquivo de composição)?
É possível redefinir o intervalo padrão.
Edite ou crie o arquivo de configuração para o daemon do docker:
Adicionar linhas:
Reinicie o dockerd:
Confira o resultado:
Também funciona para o docker-compose. Mais informações aqui https://github.com/moby/moby/pull/29376 (mesclado)
Existem três locais em que o docker irá gerar sub-redes de rede.
Para a ponte padrão (chamada "ponte"), você pode especificar BIP (acredito que seja Bridge IP; verifique se é um IP de host, não um IP de rede ) no
daemon.json
arquivo. E para redes de ponte geradas pelo usuário, você pode definir um conjunto de sub-redes para escolher (supondo que o usuário não especifique manualmente uma sub-rede). Para esses dois, o seu/etc/docker/daemon.json
ficaria assim:Cada configuração de pool de endereços acima define um intervalo CIDR e o tamanho das sub-redes a serem alocadas desse intervalo. Portanto, o acima define dois intervalos de classe B que são alocados como redes de classe C (/24). Você precisa de pelo menos 18.06 para os pools de endereços padrão. Você precisará recarregar o daemon docker para que essa alteração seja aplicada (
systemctl reload docker
). E essa alteração só modificará as redes de usuários recém-criadas, portanto, você precisará interromper os contêineres e excluir as redes existentes no intervalo errado.Na versão 18.09, o Docker adicionou a capacidade de especificar o intervalo de endereços para redes de sobreposição geradas no modo de enxame. Isso só pode ser feito no momento da criação do enxame agora, espero que seja atualizado no futuro para permitir
docker swarm update
o ajuste desses pools:Eu uso o Docker Desktop em um sistema operacional Windows e tentei alterar o IP do Bridge padrão.
O Docker gera um erro e me pede para redefinir as configurações toda vez que eu tentasse alterar apenas o bip nas configurações.
Isso funcionou: (tem que mergulhar fundo e entender como funciona)
Configure a rede de ponte padrão : "… Para configurar a rede de ponte padrão, você especifica as opções em daemon.json. Aqui está um exemplo de daemon.json com várias opções especificadas. Especifique apenas as configurações que você precisa personalizar. …"
Com compose: Especificar redes personalizadas : "… Em vez de usar apenas a rede de aplicativos padrão, você pode especificar suas próprias redes com a chave de redes de nível superior. Isso permite criar topologias mais complexas e especificar opções e drivers de rede personalizados. Você também pode use-o para conectar serviços a redes criadas externamente que não são gerenciadas pelo Compose.…”
Pode ser um pouco brutal, mas eu simplesmente faço um
sudo ifconfig docker0 down
para desligar a interface que entra em conflito com o wifi que estou tentando usar.