如何在映射卷上为Docker容器授予写入/ chmod权限?

4
我有一台带有docker支持的Synology NAS,想在上面运行一些docker容器(我对Docker还是很新的)。例如pocketmine-pm(但我相信我也会遇到其他容器的写入问题)。
我在主机上创建了一个卷,并在容器设置中映射了它。(在Synology docker设置的卷映射中,我没有点击“只读”)。
根据Dockerfile,在容器内创建了一个名为'pocketmine'的新用户,并使用该用户来启动服务器。这个用户似乎具有用户ID 1000(新Linux用户的第一个UID)。容器还使用Entrypoint.sh脚本来启动服务器。
最初,容器无法将文件写入到映射的目录中。我必须通过SSH进入主机并为UID 1000的目录'chown':
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(主机上实际不存在的用户)进行 chown 操作 - 是否有更优雅的方式来修复权限?

1个回答

4

1
好的,我会查一下,但我记得在某个地方读到过,当运行容器时,Synology不允许传递--user标志作为参数 - 但这更多是一个Synology问题而不是一个通用的Docker问题。 - Patric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接