initdb:无法更改Postgresql容器上目录的权限

我是docker工作者生态系统的新手,我正在尝试使用一个yaml作曲文件来创build一个简单的postgres容器和一个卷,以便保存它的数据。 该文件如下所示:

# Use postgres/example user/password credentials version: '3.3' services: db: image: postgres environment: POSTGRES_DB: recrow POSTGRES_USER: recrow POSTGRES_PASSWORD: recrow_db_1000 PGDATA: /var/lib/pgsql/data/pgdata volumes: - ./pgsql/data:/var/lib/pgsql/data/pgdata 

但是,在调用docker-compose -f stack.yml up ,出现以下错误:

修复现有目录/ var / lib / postgresql / data / pgdata的权限… initdb:无法更改目录“/ var / lib / postgresql / data / pgdata”的权限:操作不允许

/var/lib/pgsql/data/pgdata应该是相对于容器根目录的目录,而./pgsql/data是主机上的path。 我从安装在/mnt/storage上的ntfs-3g分区运行容器。 可能是什么问题呢? 我也运行docker没有根权限,通过添加我的用户到docker组,这个用户也有完整的访问前面提到的挂载点/mnt/storage

我猜这将是与ntfs-3g不兼容。 PostgreSQL映像包含一个在容器启动时进行权限更改的入口点脚本: https : //github.com/docker-library/postgres/blob/972294a377463156c8d61297320c872fc7d370a9/9.6/docker-entrypoint.sh#L32-L38 。 我在https://askubuntu.com/questions/11840/how-do-i-use-chmod-on-ntfs-or-fat32-partition上发现了另一个相关的问题,这个问题涉及到能够在安装时设置权限。 但不能通过chmodchown来更改(这可能是在这种情况下失败的原因)。

不幸的是,我认为这里的答案是,您不能安全地使用ntfs-3g来备份Docker主机卷。