我在公司网络配置方面遇到问题,因此我不得不修改Docker的默认子网,如this KB article中所述。
这对我的大多数容器都有效,但是我仍然对其中一些容器有疑问。检查使用中的网络后,我仍然看到Docker分配的IP地址超出了允许范围。
例如,这是我的/etc/docker/daemon.json
文件:
{
"bip": "172.44.0.1/16"
}
但是,当我创建网络时,Docker仍然将地址分配到受限范围。例如,我可以轻松地重现此行为,如下所示:
$ docker network create test_net
d7ce97965b53b3d3ea1cf0b4169d7851e115b95fe9bb506ebfa6df0964db8630
$ docker network inspect test_net
[
{
"Name": "test_net",
"Id": "d7ce97965b53b3d3ea1cf0b4169d7851e115b95fe9bb506ebfa6df0964db8630",
"Created": "2018-12-27T12:54:10.515011613-06:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.20.0.0/16",
"Gateway": "172.20.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
是否存在一种强制Docker始终生成我指定IP范围内的网络的方法?
答案 0 :(得分:0)
解决方案是将此内容包含在我的撰写文件的顶部:
def nepotism
tagstring = "array_position(ARRAY"+TAGS.keys.to_s.gsub(/\"/,"'")+", last_name)"
@nepotism = Employee.order("last_name = 'Smith' desc, " + tagstring)
end
之所以可行,是因为Docker Compose总是为每个未指定的Compose应用程序生成一个默认网络。通过在每个应用程序中包含类似的内容,可以确保您的应用程序永不冲突,并始终使用您指定的IP范围。对于大型应用程序,您可能需要增加3个八位位组,而不是2个(/ 24与/ 16)。