docker-compose 版本 3 的默认网络网关值

问题描述 投票:0回答:2

我正在使用

Nginx
版本下的
docker-compose
 创建一个 
3.7

容器

我正在尝试指定

ipam
属性。但是当我阅读下面的官方参考资料时: https://docs.docker.com/compose/compose-file/#network-configuration-reference

有一个注释,我明白

gateway
只能在版本
2
下指定。

注意:目前仅版本 2 支持其他 IPAM 配置,例如网关。

所以我尝试在

gateway
属性下指定
ipam
。我的容器仍然可以创建并运行。

然后我去检查

docker-network
设置。经过我检查和观察,没有指定的
gateway
。但我的
Nginx's access.log
仍然显示来自
172.19.100.1
的流量,我认为它是
gateway

"IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.19.100.0/24"
                }
            ]
        }

我想知道并澄清一下,在

3.7
版本下,是否有任何方法可以在
gateway
文件中指定
docker-compose
,或者如果我无法指定,默认值是什么?

另外,是否应该建议在版本

docker-compose
下写
2
而不是
3

docker docker-compose gateway docker-network
2个回答
0
投票

这对我有用:

  • 创建一个网络并为其命名(例如awesomenet)。
  • 将 docker-compose.yml 中的网络配置为“外部”(这样 compose 就不会尝试创建和使用新网络)。
  • 配置您的服务以使用您之前创建的外部网络。

在您的 shell 上(选择适合您需求的 IP 范围):

docker network create --gateway "172.172.0.1" --subnet "172.172.0.0/16" awesomenet

docker-compose.yml(或开发环境中的 docker-compose.override.yml):

version: "2.4"
services:
  webserver:
    ports:
      - "443:443"
    ...
    networks:
      - awesomenet
  another_service:
    ...
    networks:
      - awesomenet
networks:
   awesomenet:
     external: true

0
投票

截至 2024 年 2 月,Docker Compose V3 规范仍然有一个声明:

Additional IPAM configurations, such as gateway, are only honored for version 2 at the moment.

在 docker compose 文件中你仍然可以这样设置网关

version: '3.8'

networks:
  default:
    name: my-network
    ipam: 
      config:
        - subnet: 172.33.0.0/16
          gateway: 172.33.0.1

如果您使用

docker network inspect my-network
描述此网络,您可以看到即使对于 V3,网关配置也已存储

...
"IPAM": {
    "Driver": "default",
    "Options": null,
    "Config": [
        {
            "Subnet": "172.33.0.0/16",
            "Gateway": "172.33.0.1"
        }
    ]
},
...

但是,根据 Docker Compose V3 规范中的注释,网关设置似乎并未实际使用,即不被遵守。

我已通过尝试通过桥接网络上的网关地址访问主机来确定此问题,但无法解决。但是,当未指定网关或子网属性时,Docker Compose 会分配一个网关值,您“可以”使用它来访问桥接网络上的主机。换句话说,如果您让 Docker Compose 处理子网和网关,那么它就可以工作,但如果您尝试指定它,那么根据我的观察,它不会按预期工作。 更多信息请参见:

https://docs.docker.com/compose/compose-file/compose-file-v3/#ipam

© www.soinside.com 2019 - 2024. All rights reserved.