chown in docker 未将用户更改为 root

chown in docker not changing user to root

我是 Docker 的新手,一直在设置 Docker 文件和组合文件来启动服务器进行测试。

当 运行 一个 centos:6.6 图像的卷映射到我在 OSX 中的用户目录并安装 httpd 时,我的 var/www/html 用户是 1000:ftp 而不是 root:root。

我需要将文件夹更改为用户 apache:apache,以便能够向其上传文件,并且无法让 chown 或 chmod 对 var/www/html 下的任何文件夹进行任何更改。
我知道这与我将卷映射到 OS 驱动器上的某个位置有关。

所以,我的问题是..

是否可以设置它以便我可以更改 var/www/html 的所有权?

问题587 or 581表明您无法更改主机挂载目录的所有权。

改为更改您的 Apache 启动脚本,以便使用正确的 ID (1000) 而不是 apache:apache 来启动它。
请参阅 Michael A. Smith

的“apache/start_safe_perms

主要是:

read owner group owner_id group_id < <(stat -c '%U %G %u %g' .)
adduser --system --uid=$(stat -c %u .) "$owner"

新发布的 Docker Mac has a different behavior 关于所有权:

Initially, any containerized process that requests ownership metadata of an object is told that its uid and gid own the object. When any containerized process changes the ownership of a shared file system object, e.g. with chown, the new ownership information is persisted in the com.docker.owner extended attribute of the object. [...]

Michael 的 start_safe_perms 脚本可以像下面这样进行调整以跨平台一致地工作:

if [[ -n $(mount -t fuse.osxfs) ]]; then
    chown -R www-data:www-data . 2> /dev/null
    # ...
else
    read owner group owner_id group_id < <(stat -c '%U %G %u %g' .)
    adduser --system --uid=$(stat -c %u .) "$owner"
    # ...
fi

它基本上检测挂载的卷是否为 fuse.osxfs 类型。

您可以结帐API Platform's start_safe_perms script for a fully working example: https://github.com/api-platform/api-platform/blob/master/docker/apache/start_safe_perms