过滤Docker镜像时如何展示镜像附带的评论信息
解决方案
问题根因
你通过docker commit --message添加的是镜像层的提交注释,该字段属于镜像层的附属信息,Docker原生设计仅在docker history结果中展示,不会同步到镜像顶层元数据,因此无法在docker images的默认输出中展示。
最优实现方案
不要使用commit message存储业务类元数据,改用Docker原生支持的自定义Label存储所有需要筛选、展示的信息,Label属于镜像顶层元数据,既支持筛选也支持自定义输出。
操作步骤
- 提交容器时添加自定义Label
使用--change参数注入LABEL指令,可一次性添加多个自定义字段,示例:
docker commit \ --change "LABEL product_version_full=X.X.X" \ --change "LABEL test_scenario=性能压测" \ --change "LABEL maintainer=测试一组" \ <容器ID> <自定义镜像名:标签>
- 筛选镜像时自定义输出字段
使用docker images的--format参数指定要展示的Label字段,示例(筛选指定版本同时展示适配版本、测试场景字段):
docker images \ --filter "label=product_version_full=X.X.X" \ --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Label \"product_version_full\"}}\t{{.Label \"test_scenario\"}}"
- (可选)配置命令别名简化操作
如果需要高频使用该查询,可在Shell配置文件(.bashrc/.zshrc等)中添加别名:
alias docker-test-images='docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Label \"product_version_full\"}}\t{{.Label \"test_scenario\"}}\t{{.Label \"maintainer\"}}"'
配置生效后直接执行docker-test-images --filter "label=product_version_full=X.X.X"即可得到带所有自定义元数据的镜像列表。
附加查询方式
如果需要查看单个镜像的所有自定义Label,可执行:
docker inspect <镜像名:标签> | jq '.[0].Config.Labels'
内容的提问来源于stack exchange,提问作者maxh92
相关产品推荐
相关产品推荐

