Conectando um contêiner do Docker a uma interface / dispositivo de rede em vez de um endereço IP
Após uma pesquisa cuidadosa, testes e mexidas, só consegui descobrir como conectar um contêiner do Docker a uma determinada interface encaminhando a partir de um IP / porta. Isso pode ser conseguido adicionando-p Host-IP:Host-Port:Container-Port
para umdocker run
comando.
Eu tenho um aplicativo que escuta transmissões UDP (255.255.255.255) e não foi possível configurar o encaminhamento de forma que meu contêiner receba essas transmissões sem encaminhar todo o tráfego de rede na porta da qual me interessa (não importa por qual interface vem), ou seja:-p Host-Port:Container-Port
.
É possível configurar o contêiner com--net=host
e apenas escreva meu código para vincular a uma determinada interface, que eu já fiz e testei, mas isso ainda vai contra a idéia principal de um contêiner. O objetivo é ter vários contêineres do mesmo aplicativo ouvindo em diferentes interfaces de rede (como em dispositivos, não em endereços).
Alguma idéia de como eu poderia fazer isso?
EDIT # 1: Depois de pensar um pouco mais sobre isso, talvez seja possível configurar a ponte sobre a interface necessária, mas não confio no sistema operacional para enviar os pacotes de transmissão por ele. Fique ligado enquanto eu faço mais testes.
EDIT # 2: Os pacotes são enviados por uma ponte muito bem. No entanto, a ponte está configurada como a ponte padrão do Docker. Não consegui descobrir como executar contêineres em pontes diferentes. Vi algumas notas que apontam para definir a rede como--net=none
e configurando você mesmo através das configurações do contêiner lxc.