我遇到了docker-compose的问题。目前,我的堆栈容器是在他们自己的自定义隔离网络中创建的,该网络基于网桥。 例如运行docker-compose -p client1 up -d
时会创建一个名为client1_default
的网络,其网络172.18.0.9/16
是一个大子网(/16
)。
我不需要这么大的子网,/24
就足够了。
问题在于,通过这种当前的设置,我限制在大约25个容器堆栈中,因为docker(或libnetwork)用尽了地址空间。 <{1}}地址空间让我好多了,因为那时会有更多可用的地方。
所以第一个问题是:如何在不编辑/24
文件的情况下,使默认情况使docker(和docker-compose)使用/24
子网。我知道这是可能的,但它需要为每个客户端编辑.yml文件或创建一个重写的.yml。这不是最理想的。
如果直接无法做到这一点,我已经通过libnetwork代码进行了搜索,发现this(有一个“Broad”和“Granular”地址空间,默认情况下它使用“Broad”)。如何让docker使用Granular地址空间?
我读了here那个
例如,如果未在配置中另外指定,则libnetwork将从桥接网络的默认本地地址空间请求地址池,而从覆盖网络的默认全局地址空间请求地址池。 / p>
我的问题是:如何在配置中指定?提到的配置是什么?改变这种行为的语法是什么?
提前致谢!
答案 0 :(得分:2)
目前无法访问,请参阅https://github.com/moby/moby/issues/21776 + https://github.com/moby/moby/pull/29376 但你可以参与讨论和投票。
答案 1 :(得分:0)
您可能需要考虑使用CoreOS https://github.com/coreos/flannel使用 flanneld 然后,您可以通过简单的HTTP请求轻松配置它到etcd。此外,您将获得所有容器的单个虚拟化网络(甚至可以在不同的主机上运行)。如果您决定在将来扩大规模,这可能很有用。