我想在Swarm模式下测试docker。
我创建了3个Ubuntu服务器虚拟机 在每台VM上我都安装了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,我收到错误:
启动守护程序时出错:打开卷存储元数据库时出错:timeout
我认为错误是因为第一个节点获取了对文件的锁定 /var/lib/doceker/meradata.db
我该如何解决这个问题? 是否有使用glusterfs共享docker卷文件夹的替代方法?
谢谢
答案 0 :(得分:1)
您根本不应该共享此目录。它可能会导致数据损坏。由于您已经配置了glusterfs,因此可以将gluster dir挂载到容器中,并将-v /path/to/gluster/mount:/path/in/container
标志添加到docker run。然后写入容器中路径的文件将在gluster节点之间共享。其他选项是使用一些专用卷驱动程序。尝试在您最喜爱的搜索引擎中搜索“docker volumes drivers”。