docker 与 glusterfs 共享卷

docker share volumes with glusterfs

我想在 Swarm 模式下测试 docker。

我已经创建了 3 个 Ubuntu 服务器虚拟机。
在我安装的每个虚拟机上 docker。

我想完成的下一步是在 3 个 docker 节点之间共享 /var/lib/docker/volumes 文件夹。
我尝试的第一个解决方案是将 /var/lib/docker/volumes 挂载为远程 sshfs 卷。我失败了,因为当 docker 服务启动时,它在 /var/lib/docker/volumes 上执行命令 chown 但它失败了。

然后我尝试使用 glusterfs,我成功地配置了 gluster 以在 3 个节点上共享同一个文件夹(现在如果我在 /var/lib/docker/volumes 在第一个节点上,我也可以在其他 2 个节点上看到新文件)。

然后我在第一个节点上启动docker没有任何问题。但是如果我尝试在第二个节点上启动 docker 我得到了错误:

Error starting daemon: error while opening volume store metadata database: timeout

我假设错误是因为第一个节点获取了文件的锁/var/lib/doceker/meradata.db

我该如何解决这个问题? 是否有使用 glusterfs 共享 docker 卷文件夹的替代方法?

谢谢

你根本不应该共享这个目录。它可能会导致数据损坏。由于您已经配置了 glusterfs,因此您可以将 gluster 目录挂载到容器中,并将 -v /path/to/gluster/mount:/path/in/container 标志添加到 docker 运行。然后写入容器中路径的文件将在 gluster 节点之间共享。另一种选择是为此使用一些专用的卷驱动程序。尝试在您最喜欢的搜索引擎中搜索 'docker volumes drivers'。