2016-11-15 235 views
9

我通过docker-compose文件启动六个或七个容器。一个容器造成重大问题!下面是相关部分:Docker - 由docker启动的容器 - 将文件所有权变更为root

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: 

main-app-container通过docker-compose up启动(root用户)的文件系统权限在许多承诺容器的目录都改成根源!这是运行在Ubuntu 14.04,Docker 1.12.x(不知道哪个x)。

我们有另一个系统,我们运行一切作为本地用户。当我们在该容器中执行一个shell时,所有文件权限都是我们本地用户的权限,因为它是提交的。从谷歌搜索,我很确定它与卷有关,但找不到任何明确的。欢迎任何帮助!

+0

您是否尝试过在你的图像添加用户它会发生同样的方式。我认为如果你运行docker组成root用户,你将在目录内拥有root权限你是否看到过这个http://stackoverflow.com/questions/23544282/what-is-the-best-way-to-manage-permissions-for -docker-共享卷? – Arkowsky

+0

Docker本身不应该更改权限,这将与您正在运行的应用程序有关。 – BMitch

回答

2

这是主机挂载的预期行为,也就是说,/opt/mycompany/sys/config中的所有内容都与主机上的文件具有相同的UID/GID - 即按设计。

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

它无关泊坞窗 - 撰写,当您使用

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