首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过docker-compose.yml更改docker-compose.yml中挂载卷的权限?

问如何通过docker-compose.yml更改docker-compose.yml中挂载卷的权限?
EN

Stack Overflow用户
提问于 2018-05-14 15:54:21
回答 3查看 88.9K关注 0票数 41
代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-14 16:16:24

在容器中绑定挂载来自主机的目录时,文件和目录将保留它们在主机上拥有的权限。这是经过设计的:当使用绑定挂载时,您将授予容器访问来自主机的现有文件的权限,而Docker不会对这些文件进行修改;这样做将是非常危险的(例如,绑定挂载您的主目录将更改您主机的主目录的文件权限,可能导致您的计算机不再可用)。

要更改这些文件的权限,请更改其在主机上的权限。

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

票数 44
EN

Stack Overflow用户

发布于 2018-05-14 16:02:44

您可以在额外的列后面添加权限,如下所示:

代码语言:javascript
复制
volumes:
        - ./:/var/www:ro //read only
票数 9
EN

Stack Overflow用户

发布于 2020-12-01 22:28:59

实际上这有点复杂,需要更好的清晰度。

如果我们将主机文件夹folder_a挂载到来宾文件夹folder_b中,并且在创建容器镜像(Dockerfile)时已经创建了folder_b、"chown"-ed和"chmod"-ed,那么从来宾的角度来看,folder_b定义的权限必须优先。这就是在我的盒子上发生的事情。由于guest用户不应该存在于主机中,因此像“向主机添加权限”这样的答案并不是很漂亮,它的意思是“将写权限授予每个人”。

如果folder_b还没有为前面的挂载做好“准备”,但它是“动态”挂载的;我还没有找到任何方法来更改上下文中的权限。试着解释一下:主机上的docker守护进程不知道任何关于来宾用户的信息。我也很好奇,带客人名字的chmod/chown在技术上是不是可以作为docker的进化。我最初的期望是动态挂载继承了父文件夹权限(如果/mnt/a归app_user所有,那么在/mnt/a/myMount中挂载也会保留app_user对子文件夹的所有权,但是在我的测试中,新挂载的文件夹归根所有)

从安全的角度来看,操作挂载的来宾不应该将自己的安全/敏感文件夹挂载到来宾。通常假设,如果您将卷提供给来宾,则来宾必须能够在该卷上执行任何操作。然而,“即时”挂载会在来宾中产生一个“根”拥有的文件夹,因为根是来宾和主机都知道的唯一用户。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50325494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档