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

daqing · March 10, 2017 · Last by imwildcat replied at March 11, 2017 · 7754 hits

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

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

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

Reply to flowerwrong

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

Reply to flowerwrong

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

Reply to 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 不是更好,自己建数据库没意义呀。

You need to Sign in before reply, if you don't have an account, please Sign up first.