簡體   English   中英

如何從 docker-compose.yml 更改 docker-compose.yml 中已安裝卷的權限?

[英]How can I change permission of mounted volumes in docker-compose.yml from the docker-compose.yml?

version: '2'
services:
    web:
        build:
            context: ./
            dockerfile: deploy/web.docker
        volumes:
            - ./:/var/www
        ports:
            - "8080:80"
        links:
            - app

如何在docker-compose up -d --build時自動更改權限( chmod )/var/www ?

在容器中從主機綁定掛載目錄時,文件和目錄保持它們在主機上的權限。 這是設計使然:當使用綁定掛載時,您允許容器訪問來自主機的現有文件,而 Docker 不會對這些文件進行修改; 這樣做會非常危險(例如,綁定掛載您的主目錄會更改主機主目錄的文件權限,可能導致您的機器不再可用)。

要更改這些文件的權限,請更改它們在主機上的權限。

您可以在我在 StackOverflow 上發布的另一個答案中找到更多信息: https ://stackoverflow.com/a/29251160/1811501

您可以在額外的列之后添加權限,例如:

volumes:
        - ./:/var/www:ro //read only

實際上這有點復雜,需要一些更好的清晰度。

容器創建映像時(Dockerfile),然后folder_b定義的權限,必須優先考慮從客戶角度來看,如果我們安裝在主機的文件夾folder_a為客人夾folder_bfolder_b已經創建,“執行chown” -ed和“文件模式” -ed . 這就是我的盒子上發生的事情。 由於來賓用戶不應該存在於主機中,因此“向主機添加權限”之類的答案不是很漂亮,這意味着“向所有人授予寫權限”。

如果folder_b尚未預先“准備好”掛載,但已“即時”掛載; 我還沒有找到任何根據上下文更改權限的方法。 試圖大聲推理:主機上的 docker 守護進程對來賓用戶一無所知。 我也很好奇一個帶有來賓名稱的 chmod/chown 在技術上是否可以作為 docker 的演變。 我最初的期望是動態掛載繼承了父文件夾權限(如果 /mnt/a 歸 app_user 所有,那么掛載在 /mnt/a/myMount 中也會保留 app_user 對子文件夾的所有權,但是,新的在我的測試中,mounted 文件夾歸 root 所有)

從安全角度來看,操作掛載的來賓永遠不應將自己的安全/敏感文件夾掛載到來賓。 通常假設如果您將卷提供給來賓,來賓必須能夠對其執行任何操作。 然而,“即時”掛載會在來賓內部生成一個“根”擁有的文件夾,因為 root 是來賓和主機都知道的唯一用戶。

暫無
暫無

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

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