在docker中chown而不是将用户更改为root

时间:2016-04-17 03:24:45

标签: macos docker centos6.5

我是Docker的新手,并且已经设置了一个Dockerfile和compose文件来启动服务器进行测试。

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

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

所以,我的问题是......

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

2 个答案:

答案 0 :(得分:2)

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

  

最初,任何请求对象的所有权元数据的容器化进程都会被告知其uid和gid拥有该对象。当任何容器化过程改变共享文件系统对象的所有权时,例如,使用chown,新的所有权信息将保留在对象的com.docker.owner扩展属性中。 [...]

Michael的MPMusicPlayerController脚本可以像以下一样进行调整,以便跨平台一致地工作:

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 类型。

您可以查看API Platformfuse.osxfs脚本,找到一个完整的示例:https://github.com/api-platform/api-platform/blob/master/docker/apache/start_safe_perms

答案 1 :(得分:1)

问题587581表示您无法更改主机安装目录的所有权。

改为使用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"