我们如何获取容器快照并在另一个docker主机中加载快照。我想知道容器快照而不是图像。我对docker中的export / import和save / load命令感到困惑。我希望得到更多的清晰度或文档来更深入地理解它们。
用于运行容器和屋顶的元数据的快照。其他docker主机中的确切状态。这方面的帮助会很棒。
答案 0 :(得分:38)
command docker commit
拍摄容器的快照。该快照是一个图像,您可以将其放在(私有)存储库中,以便能够将其提取到另一个主机上。
不使用图片的选项(您说要避免使用)确实是save和load。根据文档,这将使用所有文件层保存容器。因此,如果你有一个子容器的设置,如 Ubuntu > JavaJDK > Elasticsearch > my-container ,所有4个文件图层都会进入。但是,您可能已将前3个图层作为图像存在于另一个主机上,在这种情况下save
会产生大量开销。然后,您可以使用export和import,根据文档,只导出顶层文件图层(换句话说,导出容器,而不是导出它下面的图像)。
有关图片,容器,文件图层等的更多信息,请参阅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/