如何列出网络; docker 容器附加到使用格式模板?
How to list Networks; a docker container is attached to using format template?
当我想检查桥接驱动程序连接到的容器列表时,我执行以下操作,
docker network inspect br01 --format='{{range .Containers}}{{println .Name}}{{end}}'
给出以下输出,
network-test01
network-test02
network-test03
但是如何列出容器连接到的网络驱动程序呢?
以下是docker检查,
.....
"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}}'
当我想检查桥接驱动程序连接到的容器列表时,我执行以下操作,
docker network inspect br01 --format='{{range .Containers}}{{println .Name}}{{end}}'
给出以下输出,
network-test01
network-test02
network-test03
但是如何列出容器连接到的网络驱动程序呢?
以下是docker检查,
.....
"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}}'