2016-11-15 43 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