我创建了一个简单的桥接网络,并在其中附加了几个容器。
如果我发出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/