【问题标题】:Docker volume option create folder as "root" userDocker 卷选项以“root”用户身份创建文件夹
【发布时间】:2017-02-09 05:24:12
【问题描述】:

我以rperez 身份登录我的PC (Fedora 24)。我已经设置了 Docker 以便能够通过这个用户运行,所以我正在运行一个容器,如下所示:

$ docker run -d \
             -it \
             -e HOST_IP=192.168.1.66 \
             -e PHP_ERROR_REPORTING='E_ALL & ~E_STRICT' \
             -p 80:80 \
             -v ~/var/www:/var/www \
             --name php55-dev reypm/php55-dev

注意$ 符号表示我以非root 用户身份运行命令(使用#)。上面的命令创建了以下目录:/home/rperez/var/www 但所有者设置为root 我相信这是因为docker 在幕后以root 用户身份运行。

进行此设置后,我无法在~/var/www 下创建文件为rperez,因为所有者是root 所以...

处理这个问题的正确方法是什么?我已经阅读了thisthis,但没有太大帮助。

有什么帮助吗?

【问题讨论】:

  • 你的意思是chown $(whoami) /path/to/your/dir
  • @kxxoling 我知道这是正确的命令,但为什么我需要一直在 Docker 创建的每个目录上运行这样的命令?应该是命令或标志或解决方法以避免这种情况,这就是我正在寻找的:)
  • 您可以在运行容器之前创建卷目录,因此该目录将归当前用户所有。
  • 我在这里找到了一个讨论:github.com/docker/docker/issues/3206 这是预期的行为。您可以在那里找到解决方案,但我认为我的方法更易于使用。
  • @kxxoling 首先创建目录确实有效,请用您的解决方案回答这个问题,以便我接受您的回答,谢谢

标签: linux docker docker-volume docker-container


【解决方案1】:

我遇到了同样的问题(出于同样的原因,也在基因组学背景下),并且发现它非常不直观。什么是“继承所有权”的推荐方式。抱歉,如果这在其他地方有所描述,但我找不到。是不是类似:

docker run ... -u $(id -u):$(id -g) ...

【讨论】:

    【解决方案2】:

    正如here 所讨论的,这是 docker 的预期行为。您可以在运行 docker 命令之前创建目标卷目录,或者在 docker 创建目录后将所有者更改为当前用户:

    chown $(whoami) -R /path/to/your/dir
    

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 2019-01-29
      • 2019-08-19
      • 2022-09-27
      • 2019-05-19
      • 2021-07-19
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多