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

标签 docker go go-templates

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

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

关于docker - 如何列出网络; docker 容器附加到使用格式模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63921780/

相关文章:

kubernetes - helm chart : Include multiple lines from values. yaml 到 configmap

php - 解析错误:语法错误,/etc/zabbix/web/zabbix.conf.php中第24行的意外 ';'

docker - 为什么客户端无法连接到localhost :8080?

mysql - 如何在 Kubernetes 中传递 .sql 文件?

pointers - Golang中Structure变量中Field的访问地址

go - 在 go 中从外部包扩展一个流畅的 API

golang 模板中的 HTML 表单提交

go - 从 golang 中的模板创建 yaml 文件

docker - Uvicorn 不会用 CTRL+C 退出

go - 通过 http 启动/停止和处理自定义调度程序