具有多个 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,我需要保持这种状态。但是,当我使用 打开端口时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 docs: https://docs.docker.com/engine/userguide/networking/

相关内容