gpt4 book ai didi

mongodb - 使用 docker 挂载卷后如何避免 uid/gid 1000 的权限被拒绝?

转载 作者:行者123 更新时间:2023-12-03 15:59:58 26 4
gpt4 key购买 nike

我正在使用 Fedora 开发 Docker 版本 1.12.5。

我尝试使用以下命令创建 Mongodb 容器:

sudo docker run -v $PWD/db:/data/db -p 27017:27017 --name db -it username/mongo /bin/bash

这是我启动 mongodb 后的响应:

# mongod
root@32c9349a75b8:/# mongod
2016-12-26T09:59:08.643+0000 I CONTROL [initandlisten] MongoDB starting : pid=10 port=27017 dbpath=/data/db 64-bit host=32c9349a75b8
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] db version v3.4.1
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] git version: 5e103c4f5583e2566a45d740225dc250baacfbd7
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] allocator: tcmalloc
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] modules: none
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] build environment:
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] distmod: ubuntu1604
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] distarch: x86_64
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] target_arch: x86_64
2016-12-26T09:59:08.644+0000 I CONTROL [initandlisten] options: {}
2016-12-26T09:59:08.646+0000 I STORAGE [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: /data/db, terminating
2016-12-26T09:59:08.646+0000 I NETWORK [initandlisten] shutdown: going to close listening sockets...
2016-12-26T09:59:08.646+0000 I NETWORK [initandlisten] shutdown: going to flush diaglog...
2016-12-26T09:59:08.646+0000 I CONTROL [initandlisten] now exiting
2016-12-26T09:59:08.646+0000 I CONTROL [initandlisten] shutting down with code:100

我检查了/data/db的文件权限:

root@32c9349a75b8:/data# ls -al 
total 4
drwxr-xr-x. 3 root root 16 Dec 26 03:15 .
drwxr-xr-x. 23 root root 266 Dec 26 09:59 ..
drwxrwxr-x. 2 1000 1000 4096 Dec 25 16:24 db

如果我只是使用 mkdir 创建目录而不用卷挂载它,那么“/db”的所有者和组将是 root,我不明白为什么只有在我尝试使用 -v 后 uid 和 gid 才为 1000 docker 运行命令。我该如何修复它?

最佳答案

卷挂载的权限是你做主机卷的目录web的权限(到主机上的目录)。修复主机本身对此文件夹的权限可以解决该问题。

最好,您可以使用命名卷而不是主机目录。 Docker 将维护卷和初始内容,并且将从具有此类卷的镜像中复制包含的权限。

关于mongodb - 使用 docker 挂载卷后如何避免 uid/gid 1000 的权限被拒绝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41329659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com