我和Docker一起玩了几天,我已经制作了一些图像(非常有趣!).现在我想坚持我的工作,来到save
和export
命令,但我不完全理解他们.
save
和export
Docker有什么区别?
mba*_*emy 158
简短的回答是:
save
将获取映像:对于VM或物理服务器,这将是安装.ISO映像或磁盘.基本操作系统.
它将打包构建图像所需的所有链的图层和元数据.然后,您可以将此"已保存"的图像链加载到另一个docker实例中,并从这些图像创建容器.
export
将获取整个容器:就像常规VM的快照一样.当然,保存操作系统,以及您所做的任何更改,在容器生命期间写入的任何数据文件.这个更像是传统的备份.
它将为您提供包含容器文件系统的扁平.tar存档.
编辑:因为我的解释可能仍然导致混淆,我认为重要的是要理解这些命令之一适用于容器,而另一个适用于图像.
一个图像必须被认为是"死"或不可变的,开始从它0或1000容器不会改变一个字节.这就是我之前与系统安装ISO进行比较的原因.它可能更接近现场CD.
甲容器 "靴"的图像,并增加了在其顶部上的附加层.该层存储容器上的任何更改(创建/更改/删除的文件...).
eNc*_*Nca 14
save
和export
命令之间有两个主要区别.
save
命令使用历史记录和元数据保存整个图像,但export
命令仅导出文件结构(没有历史记录和元数据).因此导出的tar文件将比保存的文件小.
当您使用导出的文件系统创建一个新的图像,然后这个新的图像将不包含任何USER
,EXPOSE
,RUN
等您Dockerfile命令.只传输文件结构.因此,当您在Dockerfile中使用提到的关键字时,您无法使用export命令将图像传输到另一台计算机 - 您需要始终使用save命令.
you*_*end 11
export
: container (filesystem)
-> image tar
。
import
: exported image tar
-> image
。只有一层。
save
: image
-> image tar
。
load
: saved image tar
-> image
。所有图层都将被恢复。
来自《Docker 实践》,第二版,第 190 页。
分层镜像维护镜像的历史记录、容器创建元数据以及可能已被删除或覆盖的旧文件。
扁平化映像仅包含文件系统上的当前文件集。
导出的图像不会保存任何图层或历史信息,因此它会更小并且您将无法回滚。
保存的图像将有层和历史信息,因此较大。
如果将其提供给客户,则问题是您是否要保留这些层?
归档时间: |
|
查看次数: |
42502 次 |
最近记录: |