docker数据容器中挂载cephfs遇到问题
@oscfox 你好,想跟你请教个问题:
我在docker数据容器(名称dbdata,共享目录/data/db)中使用ceph-fuse 挂载cephfs到/data/db下。
然后启动另一个mongodb容器,并且使用dbdata做数据容器,同时目录/data/db也是mongodb的数据库目录。
我想做的事情就是,使用cephfs作为mongodb的数据库目录,同时保证cephfs在容器中。以下是我执行的命令:
1.docker run -it --privileged=true -d -v /data/db --name dbdata ubuntu:ceph /usr/bin/ceph-fuse -k /home/ceph/ceph.client.admin.keyring -m 10.32.170.104:6789 /data/db
2.docker run -d --volumes-from dbdata --name mongodb1 ubuntu:mongodb --noprealloc --smallfiles
现在,我的问题是: 我的mongodb数据库数据无法写入到数据容器目录/data/db中。
我尝试过,如果不把数据容器dbdata中的目录/data/db作为cephfs挂载点的话,数据库数据可以写入进来,一旦把它作为cephfs挂载的话,数据无法写入进来。
还尝试过,如果将mongodb的目录/data/db映射到host机器上的cephfs挂载点,是可以写入数据的。
那如果我想实现使用cephfs作为mongodb的数据库目录,同时保证cephfs在容器中,应该怎么办?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
ceph本来就是一个分布式的文件存储了,这样的需求我个人比较建议ceph RBD,给不同的mongodb节点不同到RBD设备,这样也是不依赖host的
引用来自“oscfox”的评论
可以尝试一下将数据容器的目录挂载到host的目录,再mongodb映射到数据容器试试。这样可以知道是不是docker容器限制了外部容器对比容器挂载点的读写。不过我还是觉得这样的需求有点奇怪,docker容器一般用来跑应用或者服务,楼主用一个容器来作为磁盘挂载点是出于什么目的呢?为什么不直接host挂载cephfs,然后mogodb容器再映射到host相应的cephfs点?
可以尝试一下将数据容器的目录挂载到host的目录,再mongodb映射到数据容器试试。这样可以知道是不是docker容器限制了外部容器对比容器挂载点的读写。不过我还是觉得这样的需求有点奇怪,docker容器一般用来跑应用或者服务,楼主用一个容器来作为磁盘挂载点是出于什么目的呢?为什么不直接host挂载cephfs,然后mogodb容器再映射到host相应的cephfs点?