如何编辑现有的docker图像元数据?

时间:2017-02-18 14:44:35

标签: docker metadata dockerfile

我想编辑docker图像元数据,原因如下:

  • 我不喜欢图像父母EXPOSE,VOLUME等声明(见#3465,Docker-Team不想提供解决方案),所以我想&和#34;未体积"或者"揭露"图像。

  • 我不喜欢图片docker inspect [image](请参阅docker commit [container]),因为它是使用docker build

  • 从正在运行的容器生成的
  • 修复docker runcannot mount volume over existing file, file exists [path]期间的错误,如: $ docker save [image] > [targetfile.tar.gz]

我有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:5)

它有点hacky,但有效:

  1. 将图像保存到tar.gz文件中:
    tar -xvzf [targetfile.tar.gz]

  2. 提取tar文件以访问原始图像数据:
    manifest.json

  3. .Config文件中查找图像元数据文件:应该有一个类似[HEX]的密钥,其中包含[HEX].json个数字。提取的文件夹的根目录中应该有一个确切的new.tar.gz 这是包含图像元数据的文件。根据需要编辑。

  4. 将提取的文件打包回cat [new.tar.tz] | docker load - 存档

  5. 使用docker inspect [image]重新导入修改后的图片

  6. 使用{{1}}验证是否已应用元数据更改

答案 1 :(得分:3)

我遇到过相同的解决方法 - 因为我必须经常编辑某些图像的元数据(修复第三方的自动图像重建),我创建了一个小脚本来帮助执行保存/解压缩的步骤/编辑/负荷。

看看docker-copyedit。它可以删除或覆盖卷,也可以设置其他元数据值,如entrypoint和cmd。