Estou tentando executar um contêiner do Docker como um roteador entre uma --internal
rede privada ( ) do Docker e a host
rede predefinida . Isso significa que o contêiner precisa ter duas interfaces de rede: uma interface "externa", que pode acessar todos os endereços IP do host, e uma interface "interna", que atua como um gateway para os contêineres na rede interna do Docker
O próprio contêiner do roteador irá então trafegar na rede NAT de / para contêineres.
Não encontrei uma maneira de configurar o Docker para executar o contêiner com essas duas interfaces. O mais próximo que pude chegar foi ter duas bridge
interfaces atribuídas, o que não é exatamente o que eu preciso.
Tentar conectar manualmente resulta em um erro:
# docker network connect host root_router_1
Error response from daemon: Container cannot be disconnected from host network or connected to host network
Alguém pode me mostrar como conseguir isso, de preferência mesmo com o Docker Compose?
fonte
Respostas:
De acordo com as perguntas e respostas no github :
fonte
network_mode
não funciona se você precisa de algo ligado a uma rede interna ea rede do host. Parece insano que não possamos encontrar uma boa solução clara para esse problema.O Docker não permite conectar um contêiner à rede host e a qualquer outra rede de ponte do Docker ao mesmo tempo. Vou tentar ilustrar o motivo com um exemplo:
Com a configuração acima, meu palpite é que a rede host é visível a partir do C2, e suponho que essa seja a razão pela qual o Docker nos impede automaticamente de expor acidentalmente a rede host a contêineres não especificados pelo host.
Dito isto, se tivermos um conjunto de contêineres e desejarmos que todos eles sejam interconectados, com apenas um único contêiner tendo acesso à rede host, minha abordagem seria:
EDIT: ainda precisaríamos adaptar as políticas do iptables de forma que o C1 possa ser acessado do restante dos contêineres (consulte https://docs.docker.com/network/iptables/ )
fonte