在使用docker commit
提交正在运行的容器时,是否会创建文件系统的一致快照?
我正在考虑这种方法来备份容器。您只需要docker commit <container> <container>:<date>
并将其推送到本地注册表。
备份将是增量备份,因为提交只会创建一个新层。
大量的层也会严重损害容器的性能吗?有没有办法在以后删除中间层?
修改
通过一致,我的意思是每个设计用于在断电中存活的应用程序都应该能够从此快照中恢复。基本上这意味着在快照启动后不得更改任何文件。
与此同时,我发现docker现在支持多个存储驱动程序(aufs,devicemapper,btrfs)。遗憾的是,几乎没有关于它们与它们支持的选项之间的差异的文档。
答案 0 :(得分:1)
我认为一致性是你定义的。
在扁平化和堆叠太多AUFS层的缺点方面,请参阅: https://github.com/dotcloud/docker/issues/332
docker flatten与此相关联。
答案 1 :(得分:0)
我处于类似情况。我正在考虑不使用专用的数据卷容器,而是定期提交某种增量备份。除了增量备份之外,团队开发方法的最大好处是。作为新手,您可以简单地docker pull
已经包含运行,调试和开发所需的所有数据的数据库映像。
所以我现在所做的就是在提交之前暂停:
docker pause happy_feynman; docker commit happy_feynman odev:`date +%s`
据我所知,我现在没有问题。但这是一台正在开发的机器,所以我没有重载服务器的经验。