如何删除 docker 图像中的配置卷
How to remove configure volumes in docker images
我用docker run -it -v /xx1 -v /xx2 [image] /bin/bash
创建了一个容器。
然后提交图像并推送到 docker 集线器。
使用docker inspect [image]
Volumes
详情是
"Volumes": {
"/xx1": {},
"/xx2": {}
},
现在我想删除此图像中的音量 /xx1
。
我该怎么办?
我认为现在 Docker 工具无法做到这一点。您无法从 运行 容器中删除卷,或者如果您要将图像用作新 Docker 文件的基础,则无法删除继承的卷。
也许您可以使用 Jérôme Petazzoni 的 nsenter
工具手动删除容器内的挂载,然后提交。您可以使用该方法 attach a volume to a running container,但需要一些相当低级的黑客才能做到这一点。
删除卷的一种简单方法是导出然后导入容器映像:
docker run --name my-container -it [image] /bin/bash
docker export my-container > tarball
docker import tarball
有一个解决方法,您可以 docker save image1 -o archive.tar
、编辑元数据 json 文件,然后 docker import -i archive.tar
。这样历史记录和所有其他元数据都得以保留。
为了帮助save/unpack/edit/load,我创建了一个小脚本,看看docker-copyedit。专门针对您的问题,您将执行
./docker-copyedit.py from [image] into [image2] remove volume /xx1
我用docker run -it -v /xx1 -v /xx2 [image] /bin/bash
创建了一个容器。
然后提交图像并推送到 docker 集线器。
使用docker inspect [image]
Volumes
详情是
"Volumes": {
"/xx1": {},
"/xx2": {}
},
现在我想删除此图像中的音量 /xx1
。
我该怎么办?
我认为现在 Docker 工具无法做到这一点。您无法从 运行 容器中删除卷,或者如果您要将图像用作新 Docker 文件的基础,则无法删除继承的卷。
也许您可以使用 Jérôme Petazzoni 的 nsenter
工具手动删除容器内的挂载,然后提交。您可以使用该方法 attach a volume to a running container,但需要一些相当低级的黑客才能做到这一点。
删除卷的一种简单方法是导出然后导入容器映像:
docker run --name my-container -it [image] /bin/bash
docker export my-container > tarball
docker import tarball
有一个解决方法,您可以 docker save image1 -o archive.tar
、编辑元数据 json 文件,然后 docker import -i archive.tar
。这样历史记录和所有其他元数据都得以保留。
为了帮助save/unpack/edit/load,我创建了一个小脚本,看看docker-copyedit。专门针对您的问题,您将执行
./docker-copyedit.py from [image] into [image2] remove volume /xx1