docker - 无法使用静态 IP 在覆盖网络上创建 docker 容器

标签 docker docker-swarm

之前使用 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/

相关文章:

git - 让 Concourse 仅在文件 diff 而不是提交时构建新的 docker 容器

django - 看不到正在本地主机上的 docker 容器中运行的 django 站点

linux - 将 DATA (Dev-Environments/apps/etc) 分区与 Linux 系统最小尺寸 OS 分区分开的简单方法? Docker 还是 Overlayfs Overlayroot?其他?

docker - getsockopt 异常失败 : Operation not permitted in Docker-Compose

docker-compose - 使用网格和 DNSRR 的 Docker 群网络延迟

docker - 如何远程连接到 docker swarm?

node.js - 即使我使用nodemon,Docker也不会重新加载nodejs应用程序?

拉拉维尔 8 : docker pull access denied

docker - 如何通过造船厂管理许多主机

docker - Swarm 节点状态关闭,但节点应准备就绪