【问题标题】:Docker --volumes-from permissionsDocker --volumes-from 权限
【发布时间】:2015-12-16 20:30:31
【问题描述】:

我对 Docker 很陌生,所以我可能会遗漏一些东西,我的数据卷文件夹有 root 作为所有者。

这是我所做的(使用 nginx 反向代理):

# Data volume container
docker create -v <data path> --name <app>-data tianon/true
# Webapp container
docker run --volumes-from <app>-data --name <app> \
  -e VIRTUAL_HOST=<url> \
  <image> &

但是 nginx 无法写入数据文件夹,如果我进入我的容器:

drwxr-xr-x  2 root     root       4096 Dec 16 19:03 data
drwxr-xr-x  3 www-data www-data   4096 Dec 16 18:57 doc
drwxr-xr-x  2 www-data www-data   4096 Dec 16 18:57 images

我在我的 Dockerfile 镜像中做了一个 chown,但看起来 --volumes-from 改变了它。

我应该怎么做才能给data 文件夹www-data 所有权?

【问题讨论】:

    标签: permissions docker


    【解决方案1】:

    理论上 (issue 2259):

    如果您在绑定挂载之前chown 卷(在主机端),它将起作用。

    在这种情况下,你可以这样做:

    mkdir /tmp/www
    chown 101:101 /tmp/www
    docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www
    

    (假设101:101 是您容器中www-data 用户的UID:GID。)

    请注意,这不是您正在做的事情:您正在将主机文件夹安装在数据卷容器中(tianon/true 映像,它非常空,see its Dockerfile),然后将该数据卷容器安装到常规容器。

    不过,这可能行得通。

    【讨论】:

    • 嗯,它正在工作。但是在这种情况下,我看不到使用数据卷容器的意义。我可以直接从 webapp 容器中将数据卷挂载到主机上。
    • @Arthur 我同意。我只是在关注您在问题中所做的事情。
    • 我仍然看不出它们在哪个用例中有用,但你解决了我的问题。谢谢!
    • @Arthur 您将使用数据卷容器作为暴露 VOLUME (docs.docker.com/engine/reference/builder/#volume) 的容器,该容器可以安装在其他容器中。这个想法是完全抽象主机文件系统,并在专用容器中管理这些数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多