我如何编辑现有的docker图像元数据?
我想编辑一个docker镜像元数据,原因如下:
-
我不喜欢一个图像父母EXPOSE,VOLUME等声明(请参阅#3465 ,Docker-Team不想提供一个解决scheme),所以我想要“解除音量”或“解开”图像。
-
我不喜欢图像
ContainerConfig
(请参阅docker inspect [image]
),它使用docker commit [container]
-
修正
docker build
或docker run
错误,如:
cannot mount volume over existing file, file exists [path]
有什么办法可以做到吗?
它有点哈克,但工作:
-
将图像保存到tar.gz文件中:
$ docker save [image] > [targetfile.tar.gz]
-
提取tar文件以访问原始图像数据:
tar -xvzf [targetfile.tar.gz]
-
在
manifest.json
文件中查找图像元数据文件:应该有一个像.Config
这样的包含[HEX]
数字的键。 在提取的文件夹的根目录中应该有一个确切的[HEX].json
。
这是包含图像元数据的文件。 编辑,只要你喜欢。 -
将提取的文件打包回
new.tar.gz
-
使用
cat [new.tar.tz] | docker load
cat [new.tar.tz] | docker load
重新导入修改后的图像 -
使用
docker inspect [image]
来validation您的元数据更改已经被应用