如何列出网络;一个码头集装箱附加到使用格式模板?

问题描述

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

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

哪个给出以下输出,

network-test01
network-test02
network-test03

但是如何列出容器所连接的网络驱动程序呢?

以下是docker inspect,

.....
            "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}}'

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...