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

我想编辑一个docker镜像元数据,原因如下:

  • 我不喜欢一个图像父母EXPOSE,VOLUME等声明(请参阅#3465 ,Docker-Team不想提供一个解决scheme),所以我想要“解除音量”或“解开”图像。

  • 我不喜欢图像ContainerConfig (请参阅docker inspect [image] ),它使用docker commit [container]

  • 修正docker builddocker run错误,如:
    cannot mount volume over existing file, file exists [path]

有什么办法可以做到吗?

它有点哈克,但工作:

  1. 将图像保存到tar.gz文件中:
    $ docker save [image] > [targetfile.tar.gz]

  2. 提取tar文件以访问原始图像数据:
    tar -xvzf [targetfile.tar.gz]

  3. manifest.json文件中查找图像元数据文件:应该有一个像.Config这样的包含[HEX]数字的键。 在提取的文件夹的根目录中应该有一个确切的[HEX].json
    这是包含图像元数据的文件。 编辑,只要你喜欢。

  4. 将提取的文件打包回new.tar.gz

  5. 使用cat [new.tar.tz] | docker load cat [new.tar.tz] | docker load重新导入修改后的图像

  6. 使用docker inspect [image]来validation您的元数据更改已经被应用