Docker – 由docker启动的容器 – 将文件所有权变更为root

我通过docker-compose文件启动六个或七个容器。 一个容器造成重大问题! 这里是相关的部分:

services: ... main-app: image: mycompany/sys:1.2.3 container_name: "main-app-container" ports: - "8080:8080" - "8009" volumes: - db_data:/var/lib/home/data:rw - /opt/mycompany/sys/config:/opt/mycompany/sys/config:rw networks: - systeminternal hostname: "mylocalhost.company.com" volumes: db_data: driver: local networks: systeminternal: 

当通过docker-compose up启动main-app-container docker-compose up (作为root用户),提交容器中的许多目录中的文件系统权限全部更改为root! 这是运行在Ubuntu 14.04,Docker 1.12.x(不知道哪个x)。

我们有另外一个系统,我们以本地用户的身份运行一切。 当我们将shell执行到该容器中时,所有的文件权限都是我们的本地用户的所有权,因为它是提交的。 从谷歌search,我很确定这与卷有关,但没有find任何明确的。 任何帮助,欢迎!

这是主机挂载的预期行为,也就是说, /opt/mycompany/sys/config的所有内容都与主机上的文件具有相同的UID / GID – 这在devise上是相同的。

将文件更改为您需要在主机上的uid / gid: chown -R 123:321 /opt/mycompany/sys/config或者设置您的容器以便使用主机的uid / gid。

这与docker-compose无关,在使用时会发生同样的情况

docker run -v /opt/mycompany/sys/config:/opt/mycompany/sys/config mycompany/sys:1.2.3