运行Docker容器的时候 映射路径遇到用户权限问题


运行一个PostgreSQL容器,为了数据备份做了映射路径,实体机上的映射路径用户权限是root,而PostgreSQL容器中PostgreSQL的数据路径的用户权限为postgres,导致启动PostgreSQL报错。
错误如下:
* Error: could not exec /usr/lib/postgresql/9.3/bin/pg_ctl /usr/lib/postgresql/9.3/bin/pg_ctl start -D /var/lib/postgresql/9.3/main -s -o  -c config_file="/etc/postgresql/9.3/main/postgresql.conf" : 
...fail!

备注:如果不做映射路径的话服务启动正常,个人怀疑是文件夹用户权限问题,期望遇到过类似问题的人可以指导一下。
已邀请:

shlallen - DaoCloud软件工程师,合伙人

赞同来自:


很有可能是博主分析的原因,你可以把你实体机上的文件权限贴出来看看,或者把文件权限的“其他用户权限”暂设为7,看看是否可行。

xiaolunsanguo - 京东商城-基础平台部-JDOS团队

赞同来自:


博主可以试一下,在启动的时候在entrypoint里加一个脚本,用于chmod映射路径的权限。这样在容器启动时,会先挂载对应路径,然后执行你的更改映射的脚本。

大自然保护协会志愿者-王康 - badboy

赞同来自:


其实这个问题比较典型:
如果容器中的服务是以非root用户启动的话,比如rabbitmq,postgres等等,想要做路径映射来保存相关的log或者data,就会出现这个问题,因为在实体机上面没有相对应的postgres用户,导致无法启动服务。

要回复问题请先登录注册