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
但是
- 我不确定我应该使用
volume
还是 bind-mount
?
- 如果我选择
volume
我如何告诉 docker 将此卷存储在 /mnt/data
为了将 mongodb 服务耦合到特定节点(安装存储的位置),我将 label
添加到相应的节点并启动带有约束的 docker 服务。
您需要使用 mongodb 数据绑定挂载卷。在主服务器上执行以下步骤
- docker volume create -d local --name mongodata
- 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
我有 3 节点 docker 群模式集群(1 名经理和 2 名工人)。
现在我想向集群部署一个 mongodb 服务,我想将数据库存储在我已安装在 /mnt/data
下的持久存储上。所以基本上我希望服务在每个容器 /db/data
.
如何实现?
我让自己熟悉 docker service create --mount
但是
- 我不确定我应该使用
volume
还是bind-mount
? - 如果我选择
volume
我如何告诉 docker 将此卷存储在/mnt/data
为了将 mongodb 服务耦合到特定节点(安装存储的位置),我将 label
添加到相应的节点并启动带有约束的 docker 服务。
您需要使用 mongodb 数据绑定挂载卷。在主服务器上执行以下步骤
- docker volume create -d local --name mongodata
- 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