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