我的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/