我尝试从docker镜像中删除文件,然后导出docker镜像以便在另一台服务器上使用。
我已完成以下步骤:
docker exec -it <name> sh
rm <file>
exit
docker commit <id> <newImageName>
docker save <newImageName> > newImageName.tar
当我解开newImageName.tar时,它仍然包含其中一个图层中的文件。
如何从正在运行的图像中删除文件并保存该图像?
由于
答案 0 :(得分:1)
使用gField
和docker 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/