3

我有一个支持 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映射卷吗?为什么我需要chownUID 1000 的目录(主机上不存在的用户) - 没有更优雅的方法来修复权限吗?

4

1 回答 1

3

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

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

于 2017-03-10T23:13:29.077 回答