如何在docker镜像中删除配置卷

时间:2016-09-20 08:18:54

标签: docker docker-volume

我使用docker run -it -v /xx1 -v /xx2 [image] /bin/bash创建容器。

然后提交图像并推送到docker hub。

使用docker inspect [image]

Volumes详情

"Volumes": {
            "/xx1": {},
            "/xx2": {}
        },

现在我要删除此图片中的卷/xx1

我该怎么办?

3 个答案:

答案 0 :(得分:1)

我认为目前Docker工具无法实现这一点。您无法从正在运行的容器中删除卷,或者如果您要将映像用作新Dockerfile中的基础,则无法删除继承的卷。

可能您可以使用JérômePetazzoni的nsenter工具手动删除容器内的装载然后提交。您可以将此方法用于attach a volume to a running container,但是需要进行一些相当低级别的黑客操作。

答案 1 :(得分:1)

有一种解决方法,您可以docker save image1 -o archive.tar,编辑元数据json文件和docker import -i archive.tar。这样就可以保留历史记录和所有其他元数据。

为了帮助保存/解压缩/编辑/加载我创建了一个小脚本,看看docker-copyedit。特别针对您的问题,您将执行

./docker-copyedit.py from [image] into [image2] remove volume /xx1

答案 2 :(得分:0)

删除卷的简便方法是导出然后导入容器图像:

  • docker run --name my-container -it [image] /bin/bash
  • docker export my-container > tarball
  • docker import tarball