【问题标题】:How to give docker container write/chmod permissions on mapped volume?如何授予 docker 容器对映射卷的写入/chmod 权限?
【发布时间】:2017-07-31 00:58:02
【问题描述】:

我有一个支持 docker 的 Synology NAS,我想在上面运行一些 docker 容器(我对 Docker 很陌生)。例如 pocketmine-pm(但我相信其他容器也有写入问题)。

我在主机上创建了一个卷并将其映射到容器设置中。 (并且在音量映射的 Synology docker 设置中,我没有点击“只读”)。

根据 Dockerfile,在容器内创建了一个新用户“pocketmine”,该用户用于启动服务器。该用户的用户 ID 似乎为 1000(新 linux 用户的第一个 UID)。容器还使用 Entrypoint.sh 脚本来启动服务器。

最初容器无法将文件写入映射目录。我必须通过 SSH 连接到主机“chown” UID 1000 的目录:

sudo chown 1000:1000 /volXy/docker/pocketminemp -R

之后就可以下载和解压缩档案了。

很遗憾,我无法从我的 iOS 设备连接到服务器。服务器被列为“在线”,但连接失败,没有任何特定消息。然后我检查了容器的日志并看到了以下条目(不确定这是否真的阻止了连接,但我会试一试):

[*] Everything done! Run ./start.sh to start PocketMine-MP
chown: changing ownership of '/pocketmine/entrypoint.sh': Operation not permitted
chown: changing ownership of '/pocketmine/server.properties.original': Operation not permitted
Loading pocketmine.yml...

显然,容器无法 chown 之前能够下载的文件。

有人知道可以做些什么来解决这个问题吗?我需要chmod 映射的卷吗?为什么我需要chown 到 UID 1000 的目录(主机上不存在的用户) - 没有更优雅的方法来修复权限?

【问题讨论】:

    标签: docker permissions chmod chown pocketmine


    【解决方案1】:

    当您运行容器时,您应该能够使用--user="uid:gid" 标志来指定您希望运行容器的用户。

    来源:https://docs.docker.com/engine/reference/run/#user

    【讨论】:

    • 好的,会检查一下,但我相信我在某处读到了 Synology 不允许在运行容器时将 --user 标志作为参数传递的地方——但这更像是一个 Synology 问题而不是一般问题码头工人问题。
    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 2020-11-21
    • 2018-03-25
    • 2011-02-23
    • 2014-02-04
    • 2023-01-03
    • 2016-09-09
    相关资源
    最近更新 更多