Docker Swarm:如何处理持久数据(例如数据库)

我有3节点的docker swarm模式集群(1名经理和2名工人)。

现在我想部署一个mongodb服务到群集,我想将数据库存储在我挂载在/mnt/data下的持久存储中。 所以基本上我想要服务使用我的装载存储在每个容器/db/data

我如何做到这一点?

我让自己熟悉docker service create --mount但是

  • 我不确定我是否应该使用volumebind-mount
  • 如果我selectvolume ,我怎么能告诉docker存储这个卷在/mnt/data

为了将mongodb服务耦合到特定的节点(存储装入的地方),我添加了一个label到相应的节点,并用一个约束启动docker服务。

你需要用mongodb数据绑定音量。 在主服务器上执行以下步骤

  1. 泊坞窗卷创build-d本地 – 名称mongodata
  2. docker service create –network mongo \ –mount type = volume,source = mongodata,target = / data / db \ –constraint'node.role == manager'\ mongo:3.2

你也可以看看在swarm中设置mongodb集群,让db运行在HA模式下。 请按照下面的链接https://medium.com/@kalahari/running-a-mongodb-replica-set-on-docker-1-12-swarm-mode-step-by-step-a5f3ba07d06e