Nó Docker com vários endereços IP-alternando entre eles

Minha configuração de rede se parece com isso em um host docker:

➜  server git:(master) ✗ ip addr3: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000    link/ether 00:02:c9:bb:3b:f4 brd ff:ff:ff:ff:ff:ff    inet <IP Address>.18/29 brd <Default Gateway>.23 scope global ens9       valid_lft forever preferred_lft forever    inet <IP Address>.19/29 brd <Default Gateway>.23 scope global secondary ens9:0       valid_lft forever preferred_lft forever

Atualmente, tenho serviços não Docker existentes em execução na porta 443 sobre o .18 Endereço IP, e eu preciso mantê-lo assim. No entanto, quando abro uma porta usando um Dockerfile, ele não inicia porque a porta 443 já está em uso pelo host.

Existe uma maneira de alternar globalmente o endereço IP que o Docker usa ao abrir uma porta? Não quero ter que definir isso manualmente no arquivo de configuração de cada contêiner, o que, é claro, já funciona.

Você não precisa expor portas para acessar determinados contêineres na declaração de serviço. Na verdade, você pode declarar uma rede dentro de um único docker-compose.yml com uma sub-rede diferente como esta:

version: '2'networks:  custom-network:    ipam:      driver: default      config:        - subnet: 73.0.0.0/16          ip_range: 73.0.0.0/24          gateway: 73.0.0.254services:  simple-nginx:    image: nginx    networks:      custom-network:        ipv4_address: 73.0.0.10

E acesse o serviço nginx usando o IP estático 73.0.0.10 para a rede personalizada.

Para obter mais informações, você sempre pode verificar os documentos de rede para docker-compose:https://docs.docker.com/compose/networking/

Ou diretamente os documentos do docker:https://docs.docker.com/engine/userguide/networking/