如何列出网络;使用格式模板将docker容器附加到



当我想检查网桥驱动程序连接到的容器列表时,我会执行以下操作,

docker network inspect br01 --format='{{range .Containers}}{{println .Name}}{{end}}'

它给出以下输出,

network-test01
network-test02
network-test03

但是,如何对列出容器连接到的网络驱动程序进行同样的操作呢?

以下是码头检查,

.....
"Networks": {
"br01": {
"IPAMConfig": {},
"Links": null,
........
},
"bridge": {
"IPAMConfig": null,
.....
}
.....

我只想列出如下网络,

br01
bridge

我尝试过以下内容,但由于我对go模板的了解有限,无法正确使用该模板。

docker inspect network-test01 --format "{{.NetworkSettings.Networks}}"

结果如下,

map[br01:0xc0000f6180 bridge:0xc0000f6cc0]

以下模板将仅输出网络名称:

{{range $k, $v := .NetworkSettings.Networks}}{{println $k}}{{end}}

示例Go代码测试:

m := map[string]interface{}{
"NetworkSettings": map[string]interface{}{
"Networks": map[string]interface{}{
"br1":    struct{}{},
"bridge": struct{}{},
},
},
}
t := template.Must(template.New("").Parse("{{range $k, $v := .NetworkSettings.Networks}}{{println $k}}{{end}}"))
if err := t.Execute(os.Stdout, m); err != nil {
panic(err)
}

哪些输出(在Go Playground上尝试(:

br1
bridge

因此,使用以下命令:

docker inspect network-test01 --format '{{range $k, $v := .NetworkSettings.Networks}}{{println $k}}{{end}}'

还要注意,docker命令还会在每个项目后输出一个换行符,因此可以省略调用println

docker inspect network-test01 --format '{{range $k, $v := .NetworkSettings.Networks}}{{$k}}{{end}}'

最新更新