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

Docker Swarm: How to handle persistent data (e.g. database)

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

现在我想向集群部署一个 mongodb 服务,我想将数据库存储在我已安装在 /mnt/data 下的持久存储上。所以基本上我希望服务在每个容器 /db/data.

中使用我安装的存储

如何实现?

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

为了将 mongodb 服务耦合到特定节点(安装存储的位置),我将 label 添加到相应的节点并启动带有约束的 docker 服务。

您需要使用 mongodb 数据绑定挂载卷。在主服务器上执行以下步骤

  1. docker volume create -d local --name mongodata
  2. docker 服务创建 --network mongo \ --mount type=volume,source=mongodata,target=/data/db \ --约束'node.role == manager'\ mongo:3.2

您还可以查看在 swarm 中设置 mongodb 集群以使数据库 运行 处于 HA 模式。按照以下 link https://medium.com/@kalahari/running-a-mongodb-replica-set-on-docker-1-12-swarm-mode-step-by-step-a5f3ba07d06e