如何通过Go模板提取Docker镜像路径最后一段用于docker ps格式化展示
原生Docker CLI实现仅展示镜像名最后一段的解决方案
Docker内置的Go模板不支持直接获取split分割后数组的最后一个元素,最优通用方案是通过管道配合awk做后置处理,全平台兼容且无额外依赖:
直接执行命令
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Command}}" | awk ' BEGIN { FS=OFS="\t" } # 第一行直接保留表头 NR == 1 { print } # 处理数据行,替换镜像列为最后一段/后的内容 NR > 1 { split($2, img_parts, "/") $2 = img_parts[length(img_parts)] print }'
效果说明
- 无/的本地镜像会直接保留原名,带多级路径的远程镜像会自动取最后一段(含标签)
- 全程保持制表符分隔,原有表格的对齐格式不会被破坏,和原生docker ps输出体验一致
长期使用配置
如果需要高频使用,可以将命令设置为shell别名,永久生效:
- 打开你的shell配置文件(
~/.bashrc/~/.zshrc/~/.config/fish/config.fish) - 加入对应别名配置:
# bash/zsh 配置 alias dps='docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Command}}" | awk '\''BEGIN { FS=OFS="\t" } NR == 1 { print } NR > 1 { split($2, a, "/"); $2 = a[length(a)]; print }'\'''
- 重载配置后执行
dps即可直接得到期望输出
内容的提问来源于stack exchange,提问作者Benjam
相关产品推荐
相关产品推荐

