【问题标题】:Why can't i attach a container to a docker network?为什么我不能将容器附加到 docker 网络?
【发布时间】:2019-07-11 22:46:34
【问题描述】:

我创建了一个用户定义的可附加覆盖群网络。我可以检查它,但是当我尝试将容器附加到它时,在管理器节点上运行时出现以下错误:

$ docker network connect mrunner baz 
Error response from daemon: network mrunner not found

网络已定义并可连接

$ docker network inspect mrunner
[
    {
        "Name": "mrunner",
        "Id": "kviwxfejsuyc9476eznb7a8yw",
        "Created": "2019-06-20T21:25:45.271304082Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.1.0/24",
                    "Gateway": "10.0.1.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": true,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": null,
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4098"
        },
        "Labels": null
    }
]


$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
4a454d677dea        bridge              bridge              local
95383b47ee94        docker_gwbridge     bridge              local
249684755b51        host                host                local
zgx0nppx33vj        ingress             overlay             swarm
kviwxfejsuyc        mrunner             overlay             swarm
a30a12f8d7cc        none                null                local
uftxcaoz9rzg        taskman_default     overlay             swarm

为什么此网络连接失败?

** 此处已回答:https://github.com/moby/moby/issues/39391

【问题讨论】:

    标签: docker docker-swarm docker-networking


    【解决方案1】:

    this:

    要创建用于 swarm 服务的覆盖网络,请使用如下命令:

    $ docker network create -d overlay my-overlay
    

    要创建可供 swarm 服务或独立容器用于与运行在其他 Docker 守护程序上的其他独立容器通信的覆盖网络,请添加 --attachable 标志:

    $ docker network create -d overlay --attachable my-attachable-overlay
    

    所以,默认情况下,独立容器不能使用overlay网络,如果坚持,您需要添加--attachable以允许独立容器使用此网络。

    【讨论】:

    • 这正是我所做的,docker network inspect 证实了
    【解决方案2】:

    感谢 docker git repo 上的thaJeztah

    解决方案如下,但本质上是以流服务为中心:

    docker network create -d overlay --attachable --scope=swarm somenetwork
    
    docker service create --name someservice nginx:alpine
    

    如果要在创建后将服务连接到某个网络,请更新服务;

    docker service update --network-add somenetwork someservice
    

    之后; someservice 服务的所有任务都将连接到 somenetwork(除了它们连接到的其他覆盖网络)。

    https://github.com/moby/moby/issues/39391#issuecomment-505050610

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2017-06-14
      • 1970-01-01
      • 2021-12-06
      • 2020-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      相关资源
      最近更新 更多