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

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


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]


达令说
浏览 108回答 1
1回答

胡说叔叔

以下模板将仅输出网络名称:{{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上尝试):br1bridge所以使用以下命令: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}}'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go