如何给Docker容器写映射卷的chmod权限?

问题描述:

我有一个Synology NAS,它具有docker支持,并且想要运行一些docker容器(我对Docker相当新颖)。例如pocketmine-pm(但我相信我也有其他容器的写入问题)。如何给Docker容器写映射卷的chmod权限?

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

根据Dockerfile在容器中创建一个新用户'pocketmine',并且该用户用于启动服务器。用户似乎拥有用户标识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(主机上并不存在的用户) - 是否有更好的方法来修复权限?

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

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

+1

OK,将检查了这一点,但我相信,我读的地方运行容器时的Synology不允许通过--user标志作为参数 - 但是它比一台Synology问题一般的码头问题。 – Patric