gpt4 book ai didi

docker - 如何使用 docker inspect --format 从对象获取第一个 key (获取容器网络的名称)

转载 作者:行者123 更新时间:2023-12-02 18:13:35 25 4
gpt4 key购买 nike

我有这样的命令:

$ docker inspect reacthublh_mysql_1 -f "{{json .NetworkSettings.Networks }}"

为我输出的提取物:

{"reacthublh-network":{"IPAMConfig":null,"Links":null,"Aliases":["1b905711e127","mysql"],"NetworkID":"d2b6bd4815a2eb48a57d05e5d219894f453c15e3f8b5a331a5f0668ed98f4730","EndpointID":"c71240571cc1cfb7bd50119aaf6aaef3dfbc2dc56732e0fd6f593ebe00861edc","Gateway":"172.30.0.1","IPAddress":"172.30.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:1e:00:02","DriverOpts":null}}

问题是如何只提取 json 对象的第一个键 reacthublh-network

更新:

我现在找到的唯一方法是:

$ docker inspect reacthublh_mysql_1 -f "{{json .NetworkSettings.Networks }}" | cut -d '"' -f2

它输出的正是我所需要的,但我很好奇是否仍然可以在 --format 参数中执行此操作

最佳答案

docker inspect -f 选项使用 Go text/template语言,几乎没有扩展名。我不认为只打印第一个网络名称是直接可能的,但可以打印出所有网络名称而没有其他详细信息。这里的技巧是将 Networks 对象作为 map 进行迭代并打印出键:

docker inspect jolly_hodgkin \
-f '{{range $k, $v := .NetworkSettings.Networks}}{{printf "%s\n" $k}}{{end}}'

如果您有一个专门用于 JSON 操作的命令行工具(如 jq ),它的查询语言可能会更强大并且更适合您需要的数据操作。专门获取第一个 Docker 网络名称的 jq 调用可能看起来像

docker inspect jolly_hodgkin \
| jq -r '.[].NetworkSettings.Networks | keys | first'

关于docker - 如何使用 docker inspect --format 从对象获取第一个 key (获取容器网络的名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59549607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com