Docker 卷选项以 "root" 用户身份创建文件夹

Docker volume option create folder as "root" user

我以 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 所以 ...

处理这个问题的正确方法是什么?我已阅读 and this 但不是很有帮助。

有什么帮助吗?

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

创建目录后将所有者更改为您当前的用户
chown $(whoami) -R /path/to/your/dir

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

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