
Mi configuración de red se parece a esta en un host de 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
Actualmente, tengo servicios que no son de Docker ejecutándose en el puerto 443
de la .18
dirección IP y necesito mantenerlo así. Sin embargo, cuando abro un puerto usando a Dockerfile
, no se inicia porque 443
el host ya está utilizando el puerto.
¿Hay alguna manera de cambiar globalmente la dirección IP que usa Docker al abrir un puerto? No quiero tener que configurar esto manualmente en el archivo de configuración de cada contenedor, que por supuesto ya funciona.
Respuesta1
No es necesario exponer puertos para acceder a ciertos contenedores en la declaración de servicio. De hecho, puedes declarar una red dentro de un único docker-compose.yml con una subred 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
Y acceda al servicio nginx utilizando la IP estática 73.0.0.10
para la red personalizada.
Para obtener más información, siempre puede consultar los documentos de red de Docker-Compose: https://docs.docker.com/compose/networking/
O directamente los documentos de Docker: https://docs.docker.com/engine/userguide/networking/