docker - 如何过滤 "docker inspect"输出,以便仅包含某些标签 :value pairs are displayed?

标签 docker go-templates

我创建了一个简单的桥接网络,并在其中附加了几个容器。

如果我发出docker network inform webservers命令,我会得到很多输出,我想过滤掉其中的大部分。

例如,我想检查每个现有容器的 IPv4Address 值。示例 json block 如下所示:

"Containers": {
"2868125fa1f1b97fd765f7d6bd61d1d8eff3e9cb16ea6c3d5625ce1d331932b9": {
"Name": "tomcat",
"EndpointID": "36d35901e11d4b5be5336aa90e5161eca82c3a24f3661901461f3bfed2b2a2d3",
"MacAddress": "02:42:ac:14:00:03",
"IPv4Address": "172.20.0.3/16",
"IPv6Address": ""
},

因此,我尝试使用“.Containers.IPv4Address”提取 IP 地址信息,但输出为“无值”:

kamo@ubox:~$ docker inspect -f '{{ .Containers.IPv4Address }}' webservers
<no value>
kamo@ubox:~$

我还尝试了使用“range”参数的方法:

docker inspect -f '{{ range .Containers.IPv4Address }} {{ .IPv4Address }} {{ end }}' webservers

但它没有产生任何输出。

那么如何使用 --format 参数提取 IPv4Address 信息?

如果我想从每个容器中提取 2 个值 - “Name”和“IPv4Address”怎么办?

最佳答案

为了按照您尝试的方式获得它,因为您有一个容器列表,所以您必须使用 rangem 在网络中检查输出的容器列表上进行迭代。

你可以这样实现: docker 网络检查 webservers -f '{{ range.Containers}}{{.IPv4Address}}{{end}}'

但是如果您尝试获取容器的所有 IPv4 地址,请尝试使用以下命令: docker inform --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

祝你好运:)

关于docker - 如何过滤 "docker inspect"输出,以便仅包含某些标签 :value pairs are displayed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65511833/

相关文章:

go - 如何使用go模板在表格中生成超链接

java - 访问入口点中的 dockerfile ENV 变量

java - 在 Docker 中使用 Spring Boot Actuator?

使用 nvidia 运行时构建 docker

docker - 有什么方法可以将正在运行的docker目标磁盘移动到特定磁盘

templates - 有没有办法列出使用过的变量?

Golang 模板不渲染 html

go - 如何使模板与 gin 框架一起工作?

python - Kubernetes 集群中的 FileNotFoundError Python-Flask/Docker

arrays - 去模板绑定(bind)常量数组值