AWS Ubuntu实例Docker部署TimescaleDB-HA时pgdata目录权限报错求助
TimescaleDB高可用Docker部署权限报错解决方案
报错根因
chmod: changing permissions of '/home/postgresql/pgdata': Operation not permitted
initdb: error: could not change permissions of directory "/home/postgresql/pgdata": Operation not permitted
报错核心原因是两个权限不匹配:
- 执行docker run时指定的运行用户
1000:1000,和timescaledb-ha镜像内置的postgres运行用户的UID/GID不一致 - 宿主机挂载目录
/tmp/vmount的所有者权限,和容器内运行进程的用户权限不匹配,导致进程没有权限修改数据目录权限完成初始化
修复步骤
- 第一步:先查询timescaledb-ha镜像内置postgres用户的UID和GID,执行以下命令:
docker run --rm --entrypoint id timescale/timescaledb-ha:pg13-latest postgres
命令输出示例为uid=1001(postgres) gid=1001(postgres) groups=1001(postgres),记录输出的uid和gid值,下文以1001:1001为例
- 第二步:修改宿主机挂载目录的所有者权限,替换为你查到的UID:GID:
sudo chown -R 1001:1001 /tmp/vmount
- 第三步:调整docker run命令的--user参数为匹配的UID:GID,调整后的命令示例:
sudo docker run -ti --user 1001:1001 --volume=/tmp/vmount:/home/postgresql/pgdata --rm -e POSTGRES_PASSWORD=sdafasd -e PGDATA=/home/postgresql/pgdata timescale/timescaledb-ha:pg13-latest
补充说明
如果你使用的是AWS EFS等网络共享存储作为挂载目录,需要额外确认存储的权限策略是否放开了UID/GID的权限修改限制,避免出现权限不生效的问题。
内容的提问来源于stack exchange,提问作者hg628193hg
相关产品推荐
相关产品推荐

