我想编辑docker图像元数据,原因如下:
我不喜欢图像父母EXPOSE,VOLUME等声明(见#3465,Docker-Team不想提供解决方案),所以我想&和#34;未体积"或者"揭露"图像。
我不喜欢图片docker inspect [image]
(请参阅docker commit [container]
),因为它是使用docker build
修复docker run
或cannot mount volume over existing file, file exists [path]
期间的错误,如:
$ docker save [image] > [targetfile.tar.gz]
我有什么方法可以做到吗?
答案 0 :(得分:5)
它有点hacky,但有效:
将图像保存到tar.gz文件中:
tar -xvzf [targetfile.tar.gz]
提取tar文件以访问原始图像数据:
manifest.json
在.Config
文件中查找图像元数据文件:应该有一个类似[HEX]
的密钥,其中包含[HEX].json
个数字。提取的文件夹的根目录中应该有一个确切的new.tar.gz
这是包含图像元数据的文件。根据需要编辑。
将提取的文件打包回cat [new.tar.tz] | docker load
- 存档
使用docker inspect [image]
重新导入修改后的图片
使用{{1}}验证是否已应用元数据更改
答案 1 :(得分:3)
我遇到过相同的解决方法 - 因为我必须经常编辑某些图像的元数据(修复第三方的自动图像重建),我创建了一个小脚本来帮助执行保存/解压缩的步骤/编辑/负荷。
看看docker-copyedit。它可以删除或覆盖卷,也可以设置其他元数据值,如entrypoint和cmd。