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