not*_*eek 9 docker docker-compose devops
version: '2'
services:
web:
build:
context: ./
dockerfile: deploy/web.docker
volumes:
- ./:/var/www
ports:
- "8080:80"
links:
- app
Run Code Online (Sandbox Code Playgroud)
chmod何时自动更改权限()/ var / www docker-compose up -d --build?
tha*_*tah 11
从容器中的主机绑定挂载目录时,文件和目录将保留它们在主机上的权限。这是设计使然:使用绑定安装时,您使容器可以从主机访问现有文件,而Docker不会对这些文件进行修改。这样做将非常危险(例如,将主目录绑定安装会更改主机的主目录的文件权限,这可能导致您的计算机不再可用)。
要更改这些文件的权限,请更改其在主机上的权限。
您可以在我在StackOverflow上发布的另一个答案中找到有关此问题的更多信息:https ://stackoverflow.com/a/29251160/1811501
您可以在额外的列之后添加权限,例如:
volumes:
- ./:/var/www:ro //read only
Run Code Online (Sandbox Code Playgroud)
实际上这有点复杂,需要更好的清晰度。
如果我们将主机文件夹folder_a挂载到来宾文件夹folder_b并且folder_b已经创建,在创建容器映像(Dockerfile)时“chown”-ed和“chmod”-ed,则从来宾角度来看folder_b定义的权限必须优先。这就是我的盒子上发生的情况。由于来宾用户不应该存在于主机中,因此“向主机添加权限”之类的答案不是很漂亮,这意味着“向每个人授予写入权限”。
如果folder_b尚未“准备”预先安装,但它是“即时”安装的;我还没有找到任何方法来根据上下文更改权限。尝试大声推理:主机上的 docker 守护进程对来宾用户一无所知。我也很好奇,作为 docker 的演变,带有来宾名称的 chmod/chown 在技术上是否可行。我最初的期望是,动态安装继承了父文件夹权限(如果 /mnt/a 由 app_user 所有,则安装在 /mnt/a/myMount 中也会保留 app_user 对子文件夹的所有权,但是,新的在我的测试中,已安装的文件夹由 root 拥有)
从安全角度来看,操作挂载的来宾永远不应该将自己的安全/敏感文件夹挂载到来宾上。通常假设,如果您将卷提供给来宾,则来宾必须能够对其执行任何操作。然而,“动态”安装会在来宾内部生成一个“root”拥有的文件夹,因为 root 是来宾和主机都知道的唯一用户。
| 归档时间: |
|
| 查看次数: |
18736 次 |
| 最近记录: |