gpt4 book ai didi

containers - 我可以更 retrofit 载在 IBM 容器中的卷上的目录的所有者吗?

转载 作者:行者123 更新时间:2023-12-03 11:15:58 25 4
gpt4 key购买 nike

我正在尝试在 IBM 容器中启动 postgres。我刚刚通过以下方式创建了卷:

$ cf ic volume create pgdata

然后挂载它:
$ cf ic run --volume pgdata:/var/pgsql -p 22 registry.ng.bluemix.net/ruimo/pgsql944-cli

通过ssh登录容器后,发现挂载的目录是root所有的:
drwxr-xr-x  3 root root   4096 Jul  8 08:20 pgsql

由于 postgres 不允许 root 运行,我想更改此目录的所有者。但我无法更改此目录的所有者:
# chown postgres:postgres pgsql
chown: changing ownership of 'pgsql': Permission denied

是否可以更改挂载目录的所有者?

最佳答案

在 IBM Containers 中,为 docker 引擎启用了用户 namespace 。当启用用户命名空间时,容器内的有效 root 是容器进程之外的非 root 用户,NFS 不允许映射的非 root 用户对容器内的卷执行 chown 操作。请注意音量pgdata是一个 NFS,这可以通过执行 mount -t nfs4 来验证从容器。

您可以尝试建议的解决方法
How can I fix the permissions using docker on a bluemix volume?

在这种情况下,它将是

1. Mount the Volume to `/mnt/pgdata` inside the container

cf ic run --volume pgdata:/mnt/pgdata -p 22 registry.ng.bluemix.net/ruimo/pgsql944-cli

2. Inside the container

2.1 Create "postgres" group and user
groupadd --gid 1010 postgres
useradd --uid 1010 --gid 1010 -m --shell /bin/bash postgres

2.2 Add the user to group "root"
adduser postgres root
chmod 775 /mnt/pgdata

2.3 Create pgsql directory under bind-mount volume
su -c "mkdir -p /mnt/pgdata/pgsql" postgres
ln -sf /mnt/pgdata/pgsql /var/pgsql

2.2 Remove the user from group "root"
deluser postgres root
chmod 755 /mnt/pgdata

关于containers - 我可以更 retrofit 载在 IBM 容器中的卷上的目录的所有者吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31290202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com