我使用docker run -it -v /xx1 -v /xx2 [image] /bin/bash
创建容器。
然后提交图像并推送到docker hub。
使用docker inspect [image]
Volumes
详情
"Volumes": {
"/xx1": {},
"/xx2": {}
},
现在我要删除此图片中的卷/xx1
。
我该怎么办?
答案 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