为什么可以';我不能将容器连接到docker网络吗?
我已经创建了一个用户定义的可附加覆盖swarm网络。我可以检查它,但当我尝试将容器附加到它时,在manager节点上运行时会出现以下错误:为什么可以';我不能将容器连接到docker网络吗?,docker,docker-swarm,docker-networking,Docker,Docker Swarm,Docker Networking,我已经创建了一个用户定义的可附加覆盖swarm网络。我可以检查它,但当我尝试将容器附加到它时,在manager节点上运行时会出现以下错误: $ docker network connect mrunner baz Error response from daemon: network mrunner not found 网络已定义且可连接 $ docker network inspect mrunner [ { "Name": "mrunner", "
$ 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
为什么网络连接失败
**答案如下:参见:
要创建用于swarm服务的覆盖网络,请使用如下命令:
$ docker network create -d overlay my-overlay
要创建swarm服务或独立容器可用于与其他Docker守护进程上运行的其他独立容器通信的覆盖网络,请添加--attachable标志:
$ docker network create -d overlay --attachable my-attachable-overlay
因此,默认情况下,独立容器不能使用覆盖网络,如果坚持,您需要添加
--attachable
,以允许独立容器使用此网络。多亏docker git repo上的thaJeztah
:
解决方案如下所示,但本质上是以流程服务为中心:
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(以及它们连接到的其他覆盖网络)
我就是这么做的,docker network inspect证实了这一点