具有多个IP地址的Docker节点 – 在它们之间切换

我的networkingconfiguration在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 

目前,我已经在.18 IP地址的端口443上运行了现有的非Docker服务,我需要保持这种状态。 但是,当我使用Dockerfile打开一个端口时,由于端口443已被主机使用,所以无法启动。

是否有一种方法来全局切换Docker打开端口时使用的IP地址? 我不希望手动设置每个容器的configuration文件,这当然已经工作。

您不需要公开端口来访问服务声明中的某些容器。 事实上,你可以在一个docker-compose.yml中使用不同的子网来声明一个networking,像这样:

 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 

然后使用静态IP 73.0.0.10访问定制networking的nginx服务。

有关更多信息,您可以随时检查docker-compose的networking文档: https : //docs.docker.com/compose/networking/

或直接在docker文档: https : //docs.docker.com/engine/userguide/networking/