
Minha configuração de rede é semelhante a esta em um host docker:
➜ server git:(master) ✗ ip addr
3: 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 em execução na porta 443
do .18
endereço IP e preciso mantê-los assim. No entanto, quando abro uma porta usando um Dockerfile
, ela não inicia porque a porta 443
já está em uso pelo host.
Existe uma maneira de mudar 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 obviamente já funciona.
Responder1
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.254
services:
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
da rede personalizada.
Para obter mais informações, você pode verificar a documentação de rede do docker-compose: https://docs.docker.com/compose/networking/
Ou diretamente os documentos do docker: https://docs.docker.com/engine/userguide/networking/