为什么我不能将容器附加到 docker 网络?
Why can't i attach a container to a docker network?
我创建了一个用户定义的可附加覆盖群网络。我可以检查它,但是当我尝试将容器附加到它时,在管理器节点上 运行 时出现以下错误:
$ 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
为什么网络连接失败?
见this:
要创建用于 swarm 服务的覆盖网络,请使用如下命令:
$ docker network create -d overlay my-overlay
要创建可由 swarm 服务或独立容器用于与其他 Docker 守护程序上的其他独立容器通信的覆盖网络 运行,请添加 --attachable 标志:
$ docker network create -d overlay --attachable my-attachable-overlay
所以,overlay网络默认不能被standalone容器使用,如果坚持,你需要添加--attachable
让这个网络被standalone容器使用。
感谢 thaJeztah
在 docker git 回购:
解决方案如下,但本质上是以流服务为中心:
docker network create -d overlay --attachable --scope=swarm somenetwork
docker service create --name someservice nginx:alpine
如果你想在服务创建后连接到somenetwork,更新服务;
docker service update --network-add somenetwork someservice
在此之后; someservice 服务的所有任务都将连接到 somenetwork(除了它们连接到的其他覆盖网络之外)。
https://github.com/moby/moby/issues/39391#issuecomment-505050610
我创建了一个用户定义的可附加覆盖群网络。我可以检查它,但是当我尝试将容器附加到它时,在管理器节点上 运行 时出现以下错误:
$ 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
为什么网络连接失败?
见this:
要创建用于 swarm 服务的覆盖网络,请使用如下命令:
$ docker network create -d overlay my-overlay
要创建可由 swarm 服务或独立容器用于与其他 Docker 守护程序上的其他独立容器通信的覆盖网络 运行,请添加 --attachable 标志:
$ docker network create -d overlay --attachable my-attachable-overlay
所以,overlay网络默认不能被standalone容器使用,如果坚持,你需要添加--attachable
让这个网络被standalone容器使用。
感谢 thaJeztah
在 docker git 回购:
解决方案如下,但本质上是以流服务为中心:
docker network create -d overlay --attachable --scope=swarm somenetwork
docker service create --name someservice nginx:alpine
如果你想在服务创建后连接到somenetwork,更新服务;
docker service update --network-add somenetwork someservice
在此之后; someservice 服务的所有任务都将连接到 somenetwork(除了它们连接到的其他覆盖网络之外)。
https://github.com/moby/moby/issues/39391#issuecomment-505050610