Tho*_*mas 5 networking docker docker-compose
目前,我们正在将 compose 环境堆栈部署到 ubuntu 服务器。在 compose 文件中,我们没有定义地址并利用 docker compose 自带的底层默认 docker 桥接网络。
当我们将撰写环境部署到开发服务器(IP 范围 10.xxx)时,基本docker0
网络地址从172.17.0.0
.
对于每个后续部署,地址都会递增(即172.18.0.0
,然后172.19.0.0
) - 这是预期的。
我的问题是,当守护进程用完要分配的地址时会发生什么,该进程是否会重新开始172.17.0.0
?还是发生了其他事情?我在文档中找不到任何此类信息。
基本上,我想知道这是否是我应该主动采取行动,而不是在问题发生时做出反应。
先感谢您!
对于将来遇到此问题的任何人来说,似乎在使用桥接网络时,守护进程会从默认池中随机选择一个网络。除非网络没有清理干净,否则应该没有问题。对于我的特定情况,默认网络使用默认名称。因此,网络每次都会被替换,但名称相同 - 此时,先前的网络地址将被释放,因为它们不再被使用。
Docker 的网络实用程序,utils.go
:
https://github.com/docker/libnetwork/blob/a79d3687931697244b8e03485bf7b2042f8ec6b6/ipamutils/utils.go
utils.go
下面包含一个片段:
var (
// PredefinedLocalScopeDefaultNetworks contains a list of 31 IPv4 private networks with host size 16 and 12
// (172.17-31.x.x/16, 192.168.x.x/20) which do not overlap with the networks in `PredefinedGlobalScopeDefaultNetworks`
PredefinedLocalScopeDefaultNetworks []*net.IPNet
// PredefinedGlobalScopeDefaultNetworks contains a list of 64K IPv4 private networks with host size 8
// (10.x.x.x/24) which do not overlap with the networks in `PredefinedLocalScopeDefaultNetworks`
PredefinedGlobalScopeDefaultNetworks []*net.IPNet
mutex sync.Mutex
localScopeDefaultNetworks = []*NetworkToSplit{{"172.17.0.0/16", 16}, {"172.18.0.0/16", 16}, {"172.19.0.0/16", 16},
{"172.20.0.0/14", 16}, {"172.24.0.0/14", 16}, {"172.28.0.0/14", 16},
{"192.168.0.0/16", 20}}
globalScopeDefaultNetworks = []*NetworkToSplit{{"10.0.0.0/8", 24}}
)
Run Code Online (Sandbox Code Playgroud)
上面的默认网络是硬编码的,并且似乎在每次部署时都会选择其中一个网络。
归档时间: |
|
查看次数: |
2931 次 |
最近记录: |