在 CoreOS 主机之间移动 docker 数据卷容器

Posted

技术标签:

【中文标题】在 CoreOS 主机之间移动 docker 数据卷容器【英文标题】:Move docker data volume containers between CoreOS hosts 【发布时间】:2014-11-03 09:30:08 【问题描述】:

在某些情况下,集群文件系统实在是太多了。如果我没记错的话,这就是the data volume container pattern 的用例。但即使是 CoreOS 也需要不时更新。如果我仍然想尽量减少应用程序的停机时间,我必须将数据卷容器与应用程序容器一起移动到另一台主机上,同时更新旧主机。

是否存在最佳实践?更经常提到的解决方案是"backup" of a container 与旧主机上的docker export 和新主机上的docker import。但这将包括将 tar 文件 scp-ing 到其他主机。可以用fleet 管理吗?

【问题讨论】:

The right way to move a data-only docker container from one machine to another的可能重复 我希望不会。我的问题是特定于 CoreOS 的,我希望可以利用舰队来协调这个过程。话虽如此,只要不与 CoreOS 的设计相冲突,其他问题的答案确实可以适用于 CoreOS。 我认为这里建议的正确解决方案将是特定于应用程序的。您在 docker 卷中管理哪些类型的数据,以及您要尽量减少停机时间? @jkingyens 好吧,我不确定,但我不认为这是特定于应用程序的。如果您想使用数据卷容器持久地管理数据,那么在其中存储上传的图像、数据库或其他东西都没有关系。一旦一台主机出现故障(例如,为了更新或由于缩减),数据卷容器必须迁移到另一台主机。 @brejoc 我认为您正在寻找专门用于解决此问题的东西(如 Flocker),否则它会被视为应用程序问题。例如,使用可以容忍丢失与单个集群成员关联的磁盘卷的数据库复制或 NoSQL 数据存储。 【参考方案1】:

@brejoc,我不会将此称为解决方案,但它可能会有所帮助:

另类 1:使用另一个操作系统,它确实有集群,或者至少 - 不会阻止它。我现在正在尝试使用 CentOS。 2:我创建了一些工具,可以在某些用例中提供帮助。第一个工具,从 S3 检索数据(通常是工件),并且是单向的。第二个工具,我称之为“备份卷容器”,它有很大的潜力,但需要一些反馈。它为数据提供双向备份/恢复,从/到许多持久数据存储,包括 S3(还有 Dropbox,这很酷)。现在实现了,当你第一次运行它时,它会恢复到容器中。从那时起,它将监视容器中相关文件夹的更改,并在更改时(以及在一段安静期之后)备份到持久存储。

备份卷容器:https://registry.hub.docker.com/u/yaronr/backup-volume-container/ 从 S3 同步文件:https://registry.hub.docker.com/u/yaronr/awscli/ (docker run yaronr/awscli aws s3 等 - 阅读 aws 文档)

【讨论】:

@brejoc,谢谢。如果您尝试使用备份卷容器并给我您的想法,那就太好了。到目前为止很多人都下载了,但我没有收到 cmets,所以我无法知道人们是否真的觉得它有用

以上是关于在 CoreOS 主机之间移动 docker 数据卷容器的主要内容,如果未能解决你的问题,请参考以下文章

部署Flannel,实现跨主机Docker容器通信

centos7下安装docker(15.4跨主机网络-flannel)

利用etcd实现docker跨主机通信

Flannel的安装与配置实现原理说明

在不同主机上的 Docker 中运行 cron 的问题

docker之docker容器flannel模式多网段跨主机通信