
我的網路配置在 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
443
目前,我已經在IP 位址的連接埠上執行現有的非 Docker 服務.18
,並且我需要保持這種狀態。但是,當我使用 a 開啟連接埠時Dockerfile
,它無法啟動,因為連接埠443
已被主機使用。
有沒有辦法全域切換 Docker 在開啟連接埠時使用的 IP 位址?我不想在每個容器的配置文件上手動設置它,這當然已經可以工作了。
答案1
您不需要公開連接埠來存取服務聲明中的某些容器。事實上,您可以在單一 docker-compose.yml 中聲明具有不同子網的網絡,如下所示:
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
73.0.0.10
並使用自訂網路的靜態 IP 存取 nginx 服務。
有關更多信息,您可以隨時查看 docker-compose 的網絡文檔: https://docs.docker.com/compose/networking/
或直接查看 docker 文件: https://docs.docker.com/engine/userguide/networking/