运维 用 Docker 跑数据库,ElasticSearch, Apache Kafka 等需要存储的服务,数据存储是怎么解决的?

daqing · 2017年03月10日 · 最后由 imwildcat 回复于 2017年03月11日 · 7869 次阅读

目前我们公司已经把 Rails App 跑在了 Docker 中,使用 Rancher 来管理。但是像标题中说的那些有状态的服务,还没有找到很好的办法。

大家在这方面有没有什么经验?

这个问题我接触有两年了,我没什么好方法。一是用远程数据库,二是映射到物理磁盘。

对 flowerwrong 回复

映射到物理磁盘,是用 docker volume 吗?

对 flowerwrong 回复

但是这样的话,如果 container 迁移到别的机器上了,volume 不能自动迁移。

对 daqing 回复

数据库独立跑啊,需要持久化的不要放 Docker Contianer 里面

起一个数据容器 b 挂到应用容器 a。如果需要备份,再起一个临时容器 c,用 volumes-from 把 b 挂到 c,不过这种做法网上一般是用 tar 备份,用 pg_dump 有些曲折。而且 rancher 能不能定时运行新容器是个问题。

也可以用 exec 对运行中的容器 a 操作。

这种持久化容器可以参照 rancher catalog 里面一些应用的 dockerfile,比如 pg

如果是 elk 集群应该就没这个问题,天生分布式的,每个节点都有 replicas.

如果你只是为了部署个测试节点来模拟多 DB 就勇敢用 docker,生产千万还是少用 docker 来运行这种吃资源的基建服务……

docker volume,但是按照现在云计算的架构,直接 RDS 不是更好,自己建数据库没意义呀。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号