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

zar*_*tra 5 docker docker-swarm docker-volume docker-swarm-mode

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

现在我想将 mongodb 服务部署到集群,并且我想将数据库存储在我安装在/mnt/data. 所以基本上我希望服务使用我在每个容器内安装的存储/db/data

我如何实现这一目标?

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

  • 我不确定我应该使用 avolume还是 a bind-mount
  • 如果我选择volume如何告诉 docker 将此卷存储在/mnt/data

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

P E*_*ram 3

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

  1. docker Volume create -d local --name mongodata
  2. docker service create --network mongo \ --mount type=volume,source=mongodata,target=/data/db \ --constraint 'node.role == manager' \ mongo:3.2

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