docker-compose中的卷权限

时间:2019-01-03 19:49:43

标签: docker docker-compose

我想创建带有卷和自定义组的docker-container。但是在容器内部的许可下面临错误。所有文件都具有例如“ custom-group”并且可以正常工作,但是默认情况下,Document文件夹具有根组。我认为这是由于数量。如何将文档文件夹设置为“自定义组”。我的代码在下面

volumes:
  - /base/documents:/app/documents:rw

1 个答案:

答案 0 :(得分:0)

在主机上,容器内部的uid / gid通常与容器外部的uid / gid相同(默认情况下,用户名称空间处于关闭状态,不会解决此问题,实际上,这会使情况更糟)。请注意,这是uid / gid,而不是用户名和组名,因为容器可以具有自己的/ etc / passwd和/ etc / group文件。

您需要使用与主机上文件匹配的uid / gid运行容器。这可以通过撰写文件的user部分或docker run命令行上的-u选项来完成,例如:

docker run -u "$(id -u):$(id -g)" -v /base/documents:/app/documents:rw ...

或在撰写文件中:

user: "1000:1000"

如果您的应用程序必须以root用户身份运行,那么处理此问题的选项就少得多。我个人的喜好是从以root用户身份启动的入口点动态处理uid / gid,修复容器内的uid / gid以匹配主机(查看卷所有者),然后从root丢弃到容器用户以进行运行该应用程序。有关如何完成此操作的更多详细信息,可以查看我的base image回购,包括nginx示例和fix-perms脚本。