如何赋予docker容器在映射卷上写入/ chmod权限?

我有一个Synology NAS,它有docker支持,并且想运行一些docker容器(我对Docker相当新颖)。 例如pocketmine-pm(但我相信我也有其他容器的写入问题)。

我在主机上创build了一个卷,并将其映射到容器设置中。 (而在Synologydocker设置的卷映射,我没有点击“只读”)。

根据Dockerfile,在容器中创build一个新的用户'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映射卷,为什么我需要将目录切换到UID 1000(主机上不存在的用户) – 是不是有更好的方法来修复权限?

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

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