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
发布于 2018-05-14 16:16:24
在容器中绑定挂载来自主机的目录时,文件和目录将保留它们在主机上拥有的权限。这是经过设计的:当使用绑定挂载时,您将授予容器访问来自主机的现有文件的权限,而Docker不会对这些文件进行修改;这样做将是非常危险的(例如,绑定挂载您的主目录将更改您主机的主目录的文件权限,可能导致您的计算机不再可用)。
要更改这些文件的权限,请更改其在主机上的权限。
你可以在我在StackOverflow上发布的另一个答案中找到更多信息:https://stackoverflow.com/a/29251160/1811501
发布于 2018-05-14 16:02:44
您可以在额外的列后面添加权限,如下所示:
volumes:
- ./:/var/www:ro //read only发布于 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对子文件夹的所有权,但是在我的测试中,新挂载的文件夹归根所有)
从安全的角度来看,操作挂载的来宾不应该将自己的安全/敏感文件夹挂载到来宾。通常假设,如果您将卷提供给来宾,则来宾必须能够在该卷上执行任何操作。然而,“即时”挂载会在来宾中产生一个“根”拥有的文件夹,因为根是来宾和主机都知道的唯一用户。
https://stackoverflow.com/questions/50325494
复制相似问题