具有多個 IP 位址的 Docker 節點 - 在它們之間切換

具有多個 IP 位址的 Docker 節點 - 在它們之間切換

我的網路配置在 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/

相關內容