Docker从Dockernetworking中断开所有容器

我有dockernetworking“my_network”。 我想用docker network rm my_network删除这个docker network rm my_network 。 在此之前,我应该断开所有我的容器从这个networking。 我可以使用docker network inspect并获取输出

 [ { "Name": "my_network", "Id": "aaaaaa", "Scope": "some_value", "Driver": "another_value", "EnableIPv6": bool_value, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "10.0.0.0/1" } ] }, "Internal": false, "Containers": { "bbb": { "Name": "my_container_1", "EndpointID": "ENDPOITID1", "MacAddress": "MacAddress1", "IPv4Address": "0.0.0.0/1", "IPv6Address": "" }, "ccc": { "Name": "my_container_2", "EndpointID": "ENDPOINTID2", "MacAddress": "MacAddress2", "IPv4Address": "0.0.0.0/2", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ] 

如果我只有几个容器,手动断开是可以的,但如果我有50个容器,我有问题。 如何使用单个或多个命令断开所有容器与这个networking的连接?

docker network inspect有一个格式选项 。

这意味着您可以列出所有容器名称:

 docker network inspect -f '{{range .Containers}}{{.Name}}{{end}}' network_name 

这应该很容易,通过脚本,读取每个名称,并调用docker network disconnect

wwerner在下面的评论中提出了以下命令:

 for i in ` docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' network_name`; do docker network disconnect -f network_name $i; done; 

在多行中的可读性:

 for i in ` docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' network_name`;\ do \ docker network disconnect -f network_name $i; \ done; 

添加:

请注意,格式中有一个空格,而不是以空格分隔名称的答案。