如何在docker中获取容器快照

时间:2014-03-13 12:32:36

标签: backup porting snapshot docker

我们如何获取容器快照并在另一个docker主机中加载快照。我想知道容器快照而不是图像。我对docker中的export / import和save / load命令感到困惑。我希望得到更多的清晰度或文档来更深入地理解它们。

用于运行容器和屋顶的元数据的快照。其他docker主机中的确切状态。这方面的帮助会很棒。

2 个答案:

答案 0 :(得分:38)

command docker commit拍摄容器的快照。该快照是一个图像,您可以将其放在(私有)存储库中,以便能够将其提取到另一个主机上。

不使用图片的选项(您说要避免使用)确实是saveload。根据文档,这将使用所有文件层保存容器。因此,如果你有一个子容器的设置,如 Ubuntu > JavaJDK > Elasticsearch > my-container ,所有4个文件图层都会进入。但是,您可能已将前3个图层作为图像存在于另一个主机上,在这种情况下save会产生大量开销。然后,您可以使用exportimport,根据文档,只导出顶层文件图层(换句话说,导出容器,而不是导出它下面的图像)。

有关图片,容器,文件图层等的更多信息,请参阅official documentation(例如file system

答案 1 :(得分:5)

如果您正在寻找"确切状态",包括执行状态,您可能需要使用CRIU(检查点)。

鉴于Linux主机,Docker可以使用CRIU来保存容器的执行状态。 CRIU仍然是“实验性”,你可以通过运行来查看所有可能的命令(在启用实验模式之后):

docker checkpoint

您可以使用--save-dir选项将检查点放在您选择的目录中。

然后您可以使用

docker start --checkpoint (checkpoint name) --checkpoint-dir (checkpoint directory)

恢复检查点。

如果要移动服务器,您可能需要随身携带图像。

您可以在文档上阅读更多内容: https://docs.docker.com/engine/reference/commandline/checkpoint/