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

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

目前我们公司已经把 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 不是更好,自己建数据库没意义呀。

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