gpt4 book ai didi

docker 在创建新网络时不使用已定义池中的 IP

转载 作者:行者123 更新时间:2023-12-02 19:06:52 26 4
gpt4 key购买 nike

为避免冲突,我想为 docker0 使用定义的子网范围。新容器启动时由 docker 守护进程动态创建的桥和所有接口(interface)。

在快速查看 docker 文档后,我发现了有希望的 固定 cidr 选项。我将此选项添加到我的 daemon.json 中。我的配置如下所示:
/etc/docker/daemon.json

{
"bip": "192.168.89.1/22",
"fixed-cidr": "192.168.89.2/24"
}

重新启动 docker 守护进程后,配置看起来很有希望:
docker inspect bridge

[
{
"Name": "bridge",
"Id": "365e0d373bcfc82bc73c623d680dcaee773e247f631e5b2324e3b63401bcf6fd",
"Created": "2018-03-19T09:59:22.20439309+01:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "192.168.89.1/22",
"IPRange": "192.168.89.0/24",
"Gateway": "192.168.89.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]

但由于某种原因,当我创建一个新网络时:
docker network create test-network

它从默认 IP 范围获取一个新地址:
docker inspect test-network
[
{
"Name": "test-network",
"Id": "bf0f6baa8239c73a9524f8a77035bc2be18a67ad4d0d2ba4f73b3d175f5315b3",
"Created": "2018-03-19T10:31:24.450183553+01:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]

目前,我有一个临时解决方案。我将在 docker-compose.yml 中简单地定义一个自定义子网
yaml
networks:
default:
ipam:
config:
- subnet: 192.168.89.2/24

但这会导致进一步的问题,因为由于网络冲突,无法在同一主机上多次启动项目。

有谁知道问题出在哪里?

编辑:
这似乎是 docker 中缺少的功能。 Github Issue

幸运的是,该功能已在前几天提交到 master 分支: Committed feature

最佳答案

在新的 docker 版本中有 default-address-pools选项。

关于docker 在创建新网络时不使用已定义池中的 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49359847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com