如何解决如何过滤“docker inspect”输出以便只显示某些标签:值对?
我创建了一个简单的桥接网络并附加了几个容器。
如果我发出 docker network inspect webservers
命令,我会得到很多输出,我想过滤掉大部分。
例如,我想检查每个现有容器的 IPv4Address 值。示例 json 块如下所示:
"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 个值 - “名称”和“IPv4Address”怎么办?
解决方法
为了按照您尝试的方式实现它,因为您有一个容器列表,您必须使用 rangem 在网络中检查输出的容器列表上进行迭代。
你可以这样实现:
docker network inspect webservers -f '{{ range.Containers}}{{.IPv4Address}}{{end}}'
但是如果您尝试获取容器的所有 IPv4Addresses,请尝试使用以下命令:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
祝你好运:)
,没关系 Go 模板,我会用 awk 代替:
kamo@ubox:~$ docker inspect webservers | awk '/Containers/,/Options/'
"Containers": {
"2868125fa1f1b97fd765f7d6bd61d1d8eff3e9cb16ea6c3d5625ce1d331932b9": {
"Name": "tomcat","EndpointID": "36d35901e11d4b5be5336aa90e5161eca82c3a24f3661901461f3bfed2b2a2d3","MacAddress": "02:42:ac:14:00:03","IPv4Address": "172.20.0.3/16","IPv6Address": ""
},"aab8df61e3763ae4a4f8a17235a98c20eb67c0ee22526eb4d2091beed358d30b": {
"Name": "redis","EndpointID": "f64c8601a38bcba7d9446105efc6827b0c744f5954ff2cabc860fe9cabdfea7e","MacAddress": "02:42:ac:14:00:02","IPv4Address": "172.20.0.2/16","IPv6Address": ""
}
},"Options": {},kamo@ubox:~$
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。