Em um docker-compose
grupo de contêineres, os contêineres não precisam de endereços, pois podem se comunicar entre si usando esse pseudo-DNS fornecido pelo Docker apenas para os membros desse grupo. Então, para se comunicar com o exterior, é o caso de regressão NAT padrão que Docker adora.
E se eu estiver usando o endereçamento IP baseado em rede macvlan? Como eu poderia atribuir um endereço compartilhado com todo o grupo, em vez de apenas com um único serviço do grupo. Todos os exemplos e documentação que encontrei não apenas não são oficiais, mas também aplicam o endereço no nível de serviço em um arquivo composto. Nunca há qualquer menção ou sugestão de outras opções.
Se eu movesse essas linhas com o endereço IP para longe do serviço e para a parte que faz referência à rede docker macvlan no arquivo de composição, e então deixasse os serviços como antes, para que eles usassem aquela farsa de NAT, mas pelo menos atrás de um independente endereço do host, isso funcionaria?
Encontrei este trecho no GitHub que serve de exemplo:
#
# macvlan def
docker network create -d macvlan \
--subnet=192.168.0.0/24 \
--gateway=192.168.0.1 \
--ip-range=192.168.0.100/28 \
-o parent=eth0 vdsm
#
# compose file
services:
dsm:
container_name: dsm
..<snip>..
networks:
vdsm:
ipv4_address: 192.168.0.100 ╮
│ ↙︎ MOVE SOMEWHERE DOWN HERE
networks: ╭────────────────────╯
vdsm: ↓ ← macvlan/EXT NETWORK REF
external: true
É como uma abordagem híbrida macvlan + NAT (rede de ponte), eu acho. De qualquer forma, funcionaria?
Obrigado.