What is the difference between save and export in Docker?
我和Docker玩了几天,我已经拍了一些照片(真的很有趣!).现在,我想坚持自己的工作,来听
Docker中的
简短的回答是:
save 将获取一个映像:对于虚拟机或物理服务器,将是安装.iso映像或磁盘。基本操作系统。它将打包构建图像所需的所有链的层和元数据。然后您可以将这个"保存的"图像链加载到另一个Docker实例中,并从这些图像创建容器。
export 将获取整个容器:就像普通虚拟机的快照一样。当然可以保存操作系统,但也可以保存您所做的任何更改,以及在容器生命周期中写入的任何数据文件。这一个更像是传统的备份。它将为您提供一个包含容器文件系统的.tar平面存档。
编辑:由于我的解释可能仍然会导致混淆,我认为理解这些命令中的一个用于容器,而另一个用于图像是很重要的。
一个图像必须被认为是"死的"或不可变的,从它开始0或1000个容器不会改变一个字节。这就是为什么我之前把它与安装ISO的系统做了比较。它可能更接近一张现场CD。
一个容器"引导"图像并在其上添加一个附加层。此层存储容器上的任何更改(创建/更改/删除的文件…)。
使用导出的文件系统创建新映像时,此新映像将不包含来自DockerFile的任何
导出的图像将不会保存任何层或历史信息,因此它将更小,您将无法回滚。
保存的图像将有层和历史信息,所以更大。
如果把这个交给客户,问题是你是否想保留这些层?
从技术上讲,保存/加载与存储库一起工作,存储库可以是一个或多个图像,也可以称为层。图像是回购中的单层。最后,容器是一个实例化的映像(运行与否)。
docker save为image提供的每个参数生成一个tar文件repo,其中包含所有父层、所有标记+版本或指定的repo:tag。
docker export生成指定的文件(可以是tar或tgz),其中包含平面内容,而不包含容器中指定卷的内容。
docker save需要在docker image上使用,docker export需要在容器上使用(就像运行image一样)
节约使用
docker save [OPTIONS] IMAGE [IMAGE...]
Save an image(s) to a tar archive (streamed to STDOUT by default)
--help=false Print usage -o, --output="" Write to a file,
instead of STDOUT
出口使用
docker export [OPTIONS] CONTAINER
Export the contents of a container's filesystem as a tar archive
--help=false Print usage -o, --output="" Write to a file,
instead of STDOUT