Answers:
简短的答案是:
save
将获取映像:对于VM或物理服务器,将是安装.ISO映像或磁盘。基本操作系统。
它将打包构建图像所需的所有链的层和元数据。然后,您可以将此“保存的”图像链加载到另一个docker实例中,并从这些图像创建容器。
export
将获取整个容器:就像常规VM的快照一样。当然,可以保存操作系统,还可以保存您所做的任何更改,以及保存容器寿命期间写入的任何数据文件。这更像是传统的备份。
它将为您提供一个包含容器文件系统的平面.tar归档文件。
编辑:由于我的解释仍然可能导致混乱,我认为了解这些命令之一适用于容器,而其他命令适用于图像非常重要。
一个图像必须被认为是“死”或不可变的,开始从它0或1000容器不会改变一个字节。这就是为什么我将之前与系统安装ISO进行比较的原因。它甚至更接近于现场CD。
甲容器 “靴”的图像,并增加了在其顶部上的附加层。此层将所有更改存储在容器上(创建/更改/删除的文件...)。
docker commit
。我可以然后save
图像。或者我可以export
直接使用容器。并且两种方式(save
图像和export
容器)将具有相同的结果?
export
会给你一个平坦的.tar归档文件包含你的容器的文件系统。save
将打包构建图像所需的所有链的层和元数据。然后,您可以将该saved
图像链加载到另一个docker实例中,并从这些图像创建容器。
export
功能的情况下完成。
export
所有元数据都将丢失,因此,如果尝试使用该图像运行容器,则需要重新设置CMD和其他元数据。 save
对我来说还算不错,但是出口很麻烦
导出的图像不会保存任何图层或历史记录信息,因此它会更小并且您将无法回滚。
保存的图像将具有图层和历史信息,因此更大。
如果将其提供给客户,那么问题是您是否要保留这些层次?
Docker save生成tar文件存储库,其中包含image所提供的每个参数的所有父层,所有标记+版本或指定的repo:tag 。
Docker export生成具有纯内容的指定文件(可以是tar或tgz),而Container中没有指定卷的内容。
docker save需要在docker映像上使用,而docker export需要在容器上使用(就像运行映像一样)
保存用量
docker save [OPTIONS] IMAGE [IMAGE ...]
将图像保存到tar存档(默认情况下流式传输到STDOUT)
--help = false打印用法-o,--output =“”写入文件,而不是STDOUT
出口用途
docker export [OPTIONS]容器
将容器文件系统的内容导出为tar存档
--help = false打印用法-o,--output =“”写入文件,而不是STDOUT