【问题标题】:Docker-Compose mounted files are not owned by rootDocker-Compose 挂载的文件不属于 root
【发布时间】:2018-01-23 20:15:57
【问题描述】:

我正在将笔记本电脑/主机工作目录中的文件挂载到容器中,但我不确定为什么挂载的文件归www-data 所有。 q 是在主机上创建的,所以它归 root 所有,正如预期的那样。

容器内:

其他一些观察:

主机 UID(我的 OS X 帐户):1783256022(不知道为什么会这样)

容器 UID(www-data):33

Dockerfile:

FROM nginx:1.13.8

RUN apt-get update
RUN apt-get install -y nano && \
    apt-get install -y git && \
    apt-get install -y procps && \
    apt-get install net-tools

RUN mkdir -p /var/www/html
WORKDIR /var/www/html

docker-compose.yml:

version: '3'
services:

  web:
    build:
      context: ./docker/nginx
    image: tc-web:0.1.0
    container_name: tc-web
    volumes:
      - ./:/var/www/html/
      - ./docker/nginx/.bashrc:/root/.bashrc
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    ports:
      - 8080:80

【问题讨论】:

  • 你在 Linux 主机上吗?
  • 我使用的是 OS X。

标签: macos docker docker-compose


【解决方案1】:

当您在类 Unix 系统中使用卷挂载目录时,文件将在 uid 和 gid 方面保持它们在主机中的相同权限。这意味着在您的主机(可能是您的用户)中创建文件的 uid 与容器内的 www-data 用户具有相同的用户 id。

当您从容器内部创建文件时,由于容器以 root 用户身份运行,因此文件将归 root 用户所有(容器内部和外部)。

【讨论】:

  • 很高兴知道这一点。我确实检查了 UID,但是它们看起来并不相同。我用实际的 ID 更新了帖子。你能看看吗?根据其他一些观察。
  • 另外,我尝试在主机上创建新文件并 chown 给其他用户。这些新文件也显示为 root 拥有。
  • 目前不知道 Mac os X 上的 docker 是否有效。你有虚拟机还是都在主机上运行?
  • 我正在使用 OSX 客户端直接在主机上运行它。
  • 那么ls -ln 在您用作卷的目录上的主机中返回什么?
猜你喜欢
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多