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) ...
我以 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
所以 ...
处理这个问题的正确方法是什么?我已阅读
有什么帮助吗?
正如所讨论的 here,这是 docker 的预期行为。您可以在 运行 docker 命令之前创建目标卷目录,或者在 docker:
创建目录后将所有者更改为您当前的用户chown $(whoami) -R /path/to/your/dir
我遇到了同样的问题(出于同样的原因也在基因组学背景下)并且发现它非常不直观。 “继承所有权”的推荐方法是什么。抱歉,如果这在其他地方有描述,但我找不到。是不是像:
docker run ... -u $(id -u):$(id -g) ...