运行docker时发生mongo错误

我的docker – 撰写:

version: "2" services: bimbucket-api: build: . ports: - "3007:3007" links: - mongo volumes: - .:/opt/app mongo: image: mongo volumes: - /data/db:/data/db ports: - "27017:27017" 

我得到许可错误:

 mongo_1 | chown: changing ownership of '/data/db/diagnostic.data/metrics.2017-06-27T13-32-30Z-00000': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/journal/WiredTigerLog.0000000054': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/journal/WiredTigerPreplog.0000000001': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/journal/WiredTigerPreplog.0000000002': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/WiredTiger.turtle': Operation not permitted mongo_1 | chown: changing ownership of '/data/db/WiredTigerLAS.wt': Operation not permitted 

关于数据的ls-la:

 ls -la data total 0 drwxrwxrwx 3 root wheel 102 Dec 1 2016 . drwxr-xr-x 35 root wheel 1258 Jun 25 04:29 .. drwxrwxrwx@ 118 root wheel 4012 Jun 27 15:33 db 

如果我手动更改/data/db的权限,它将被改回。

这里有什么问题? 如果我在本地运行mongo,没有问题。

只有sudo组的根目录或成员才能更改文件/目录的所有权。 在Docker中运行mongodb并从主机添加卷时,mongo会尝试以mongod用户身份运行。 由于这个用户不存在于你的主机上,并且root拥有mongod / docker正在尝试拥有的操作系​​统,因此操作系统把这看作是一个权限问题,你将会看到这个错误。 你有几个select:

  1. configurationmongo以root身份运行,通过编辑mongoconfiguration并在docker构build过程中复制它。 这假设你正在使用docker文件来构build该映像。 那么访问所连接的卷是没有问题的。

  2. 在主机上创build一个mongod用户和组,并将数据目录的所有权更改为操作系统认为所有权/权限没有区别的那个用户。

  3. 重新构build您的系统,以便mongo可以使用默认的容器数据存储大小,并完全放弃卷装载。