之前使用 Docker 17.05,我能够创建子网为 10.0.7.0/24 的覆盖网络,然后我能够创建 IP 为 10.0.7.2 的容器。
现在我使用 Docker 18.03,我能够创建子网为 10.0.7.0/24 的覆盖网络。但我无法创建 IP 10.0.7.2 的容器。 我知道10.0.7.1是网关IP。但新的 Docker(18.03) 中使用的是 10.0.7.2。
请问谁能解释一下为什么会发生这种情况吗?
在 Docker 18.03 上,
mynet
是我的覆盖网络
> docker inspect mynet
[
{
"Name": "mynet",
"Id": "4lq0j7thvyb8dkwt0zbbvgski",
"Created": "2018-03-29T09:27:41.369349452Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.7.0/24",
"Gateway": "10.0.7.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": null,
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4102"
},
"Labels": null
}
]
docker run
显示此错误:
> docker run -dit --name mycon --network mynet --ip 10.0.7.2 ubuntu:16.04
caebeda51357d8e53f11fb765c8b4a65bd6c37d6746dbbdd1b4b8be7e6235a44
docker: Error response from daemon: attaching to network failed, make sure your network options are correct and check manager logs: context deadline exceeded.
提前致谢。
最佳答案
检查 Swarm 节点是否设置为 availability=drain
。
该问题已记录 here
否则,在18.03中,我还没有遇到这个问题。
如果 availability
设置为事件,则以下网络适用于我;如果将其设置为 drain
,我会遇到您的问题。
docker inspect ovr2 [
{
"Name": "ovr2",
"Id": "28a5i9gcnys642u059ltfcjut",
"Created": "2018-11-20T16:26:07.458744293Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "10.0.7.0/24",
"Gateway": "10.0.7.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": null,
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4097"
},
"Labels": null
} ]
关于docker - 无法使用静态 IP 在覆盖网络上创建 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49552742/