如何删除正在运行的docker镜像中的文件,然后保存图像以便以后加载?

时间:2017-05-23 14:02:49

标签: docker

我尝试从docker镜像中删除文件,然后导出docker镜像以便在另一台服务器上使用。

我已完成以下步骤:

docker exec -it <name> sh
rm <file>
exit
docker commit <id> <newImageName>
docker save <newImageName> > newImageName.tar

当我解开newImageName.tar时,它仍然包含其中一个图层中的文件。

如何从正在运行的图像中删除文件并保存该图像?

由于

2 个答案:

答案 0 :(得分:1)

使用gFielddocker exec删除文件,然后使用rm导出容器。使用docker export还原容器时,文件将不在那里。

当你使用docker import时,你正在创建另一个层而不是之前的层,并且该文件仍将存在于前一层tarball中,因为Docker镜像是基于层的概念构建的。当您docker commit并运行图片时,该文件将不在那里。

如果您的问题是tarball中存在的文件,因为病毒扫描出现误报,请使用docker load

答案 1 :(得分:0)

所以它应该是

docker exec -it container_id_or_name sh

现在删除文件

rm file

然后你离开容器

ctrl d

exit

现在提交

docker commit container_id_or_name myuser:myimage

你保存

docker save myuser:myimage > newImageName.tar

查看文档

https://docs.docker.com/engine/reference/commandline/commit/

https://docs.docker.com/engine/reference/commandline/save/