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