2017-06-27 56 views
0

我的搬運工,撰寫:在未經許可的錯誤與蒙戈運行時,搬運工人

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" 

我得到permissionerror:

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 .. 
[email protected] 118 root wheel 4012 Jun 27 15:33 db 

如果我手動更改在/data/db的許可下,它將被改回。

這裏有什麼問題?如果我在本地運行mongo,沒有問題。

+0

主機中/ data/db文件夾的權限是什麼?該應該由root用戶擁有,作爲root用戶在Docker容器內創建此文件夾。 –

回答

1

只有sudo組的根目錄或成員可以更改文件/目錄的所有權。當您在docker中運行mongodb並從主機添加捲時,mongo會嘗試以mongod用戶身份運行。由於該用戶不存在於你的主機上,並且root擁有卷mongod/docker試圖擁有的操作系​​統將此視爲權限問題,您將看到該錯誤。你有幾個選擇:

  1. 配置mongo作爲root運行,通過編輯mongo配置並在docker構建過程中複製它。這假定您正在使用docker文件來構建該映像。那麼訪問所連接的卷將沒有問題。

  2. 在主機上創建一個mongod用戶&組,並將數據目錄的所有權更改爲操作系統認爲所有權/權限沒有差異的用戶。

  3. 重新構建您的系統,以便mongo可以使用默認的容器數據存儲大小,並完全放棄卷裝載。

0

我在CentOS的有這個問題,解決辦法是打開了SELinux:

setenforce 0 

這不是一個蒙戈問題。這實際上是一個碼頭問題。當docker想要映射卷時,它會嘗試更改許可權,並且將失敗的做到用戶/組/ selinux限制。

UPDATE:

有一個在entrypoint.sh一個chown命令試圖更改目錄和文件的權限在映射的卷。詳情請參閱here