如何在映射卷上提供docker容器写/ chmod权限?

时间:2017-03-09 21:15:09

标签: docker permissions chmod chown pocketmine

我有一个具有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设备连接到服务器。服务器列为' online'但连接失败,没有任何特定的消息。然后我检查了容器的日志并看到了以下条目(不确定这是否真的阻止了连接,但我会试一试):

[*] 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...

显然,容器无法提供以前可以下载的文件。

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

1 个答案:

答案 0 :(得分:2)

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

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