如何为Docker镜像config.json的history条目添加author字段
操作前提
你已经完成镜像拉取、docker save导出tar包、解压tar包到独立目录,可直接访问根目录下的config.json文件,请勿随意改动layer层目录、manifest.json等其他配套文件,避免镜像损坏。
方法1:手动编辑(适合少量条目修改)
- 用任意支持JSON语法校验的文本编辑器(如VS Code、Notepad++、Vim)打开
config.json - 定位到需要修改的目标条目,也就是示例中最后一个缺失
author字段、created时间为2021-02-18T19:34:55.646987803Z的对象 - 在该对象内部添加
"author": "你要指定的作者名"字段,字段顺序不影响JSON解析,修改后示例如下:
{ "created": "2021-02-18T19:34:55.646987803Z", "author": "你的目标作者名", "created_by": "/bin/sh -c #(nop) COPY in /lib/x86_64-linux-gnu/libz.so.1 " }
- 编辑时注意JSON格式合法性:新增字段后如果后续还有其他字段,末尾要加逗号;如果是对象最后一个字段,末尾不要加多余逗号,避免JSON解析报错。
- 编辑完成后,必须进入解压后的目录根层级执行打包命令,确保tar包结构和原包一致(根目录直接包含config.json、layer目录、manifest.json等文件,不多套外层目录),打包命令参考:
tar -cf 你的自定义镜像名.tar ./*
方法2:命令行脚本批量处理(适合批量操作、避免手动格式错误)
使用命令行JSON处理工具jq实现自动修改,无需手动校验格式:
- 先安装对应版本的
jq工具 - 执行以下命令,自动为history数组最后一个条目添加指定的author字段:
jq '.history[-1].author = "你的目标作者名"' config.json > temp_config.json && mv temp_config.json config.json
- 若需要修改数组中其他指定位置的条目,将命令中的
[-1]替换为数组对应索引即可(数组从0开始计数,比如要修改第3个条目就替换为[2])
结果验证
修改完成后用docker load -i 你的自定义镜像名.tar加载镜像,再用docker history 你的镜像名确认author字段已正确写入即可。
内容的提问来源于stack exchange,提问作者Sarthak Goyal
相关产品推荐
相关产品推荐

