【问题标题】:Docker - container started by docker-compose changing file ownership to rootDocker - 由 docker-compose 启动的容器,将文件所有权更改为 root
【发布时间】:2016-11-15 19:45:02
【问题描述】:

我正在通过 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:

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

我们有另一个系统,我们以本地用户身份运行所有内容。当我们在该容器中执行 shell 时,所有文件权限都属于我们的本地用户,该用户在提交时拥有所有权。通过谷歌搜索,我很确定它与卷有关,但找不到任何确定的东西。欢迎任何帮助!

【问题讨论】:

  • 您是否尝试在图像中添加用户。我认为如果您以 root 身份运行 docker compose up,您将在目录中拥有 root 权限您看到了吗stackoverflow.com/questions/23544282/…
  • Docker 本身不应该更改权限,这将与您正在运行的应用程序有关。

标签: docker docker-compose


【解决方案1】:

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

要么将文件更改为您在主机上需要的 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

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多