簡體   English   中英

運行 docker 時 mongo 的權限錯誤

[英]Permission error with mongo when running docker

我的 docker-compose:

version: "2"
services:
 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試圖擁有該操作系統的卷,因此將其視為權限問題,您將看到該錯誤。 您有幾種選擇:

  1. 通過編輯mongo配置並在docker構建過程中復制它,將mongo配置為以root身份運行。 假設您正在使用docker文件構建該映像。 這樣,訪問附加卷將沒有問題。

  2. 在主機上創建一個mongod用戶和組,然后將數據目錄的所有權更改為該操作系統在所有權/權限上沒有區別的用戶。

  3. 重新設計系統,以便mongo可以在其生命周期內使用默認的容器數據存儲大小,並完全放棄卷裝載。

我在CentOS中遇到了這個問題,解決方案是打開SELinux:

setenforce 0

這不是mongo問題。 實際上,這是一個碼頭工人問題。 當docker想要映射該卷時,它嘗試更改權限,但對用戶/組/ selinux限制失敗。

更新:

entrypoint.sh中有一個chown命令,嘗試更改映射卷中目錄和文件的權限。 這里閱讀更多。

您可以更改為使用卷掛載,而不是使用目錄掛載。

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

這是mongo中的問題: https://github.com/docker-library/mongo/issues/232#issuecomment-355423692

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM