gpt4 book ai didi

docker - 使用 Go 模板获取 docker 镜像路径的最后一个元素

转载 作者:行者123 更新时间:2023-12-04 14:50:30 25 4
gpt4 key购买 nike

我想生成一个合成 docker ps表,但我的 docker 图像路径很长。我试图做的解决方案是只显示图像名称的最后一部分:
这就是我所拥有的:

docker ps --format "table {{.Names}}\\t{{.Image}}\\t{{.Status}}\\t{{.Command}}"

NAMES IMAGE STATUS COMMAND
a_container a_local_image Up 36 minutes "python…"
another_container registry.example.com/group/subgroup/project/my_image:latest Up 38 minutes "go…"
我想:
docker ps --format "table {{.Names}}\\t{{ <magic .Image> }}\\t{{.Status}}\\t{{.Command}}"

NAMES IMAGE STATUS COMMAND
a_container a_local_image Up 36 minutes "python…"
another_container my_image:latest Up 38 minutes "go…"
所以基本上,获取最后一个 / 之后的内容, 喜欢 basename做。
这是我尝试过的:
# No fixed length
docker ps --format "table {{ slice .Image 0 10}}"

# No last index available
docker ps --format 'table {{ (split "/" .Image) }}'
任何帮助或解决方法表示赞赏。
ps:由于我使用 docker cli,我认为我无法定义要在模板表达式中使用的自定义函数。

最佳答案

没有获得模板数组最后一个元素的好方法。即使您可以使用 indexlen内置函数,你不能用算术得到 len - 1 .
这是一个仅限模板的技巧:

{{ $image := "" }}{{ range split .Image "/" }}{{ $image = . }}{{ end }}{{ $image }}
基本上它执行以下操作:
  • 声明一个变量 $image
  • split .Image/
  • 遍历数组字符串并只分配给 $image
  • 在范围的末尾,$image将保存最后一个元素的值
  • 打印 $image

  • 完整命令(包含顶点 ',因此您不必转义引号):
    docker ps --format 'table {{.Names}}\t{{ $image := "" }}{{ range split .Image "/" }}{{ $image = . }}{{ end }}{{ $image }}\t{{.Status}}\t{{.Command}}'

    关于docker - 使用 Go 模板获取 docker 镜像路径的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69140937/

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