我正在Mac上使用docker,并尝试使用nfs卷获取postgresql数据库的持久化容器。
我在/etc/exports中加入一行代码 /Users/me/db -alldirs *(rw,sync,no_subtree_check,no_root_squash),并重新启动nfsd。我认为(如果我错了请纠正我)关键点是no_root_squash,它允许客户端root用户仍然是root用户。然后在我的docker-compose.yml文件中,我将nfsmount点声明为以下内容:
我在/etc/exports中加入一行代码 /Users/me/db -alldirs *(rw,sync,no_subtree_check,no_root_squash),并重新启动nfsd。我认为(如果我错了请纠正我)关键点是no_root_squash,它允许客户端root用户仍然是root用户。然后在我的docker-compose.yml文件中,我将nfsmount点声明为以下内容:
version: '2'
volumes:
nfsmountdbdata:
driver: local
driver_opts:
type: nfs
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
device: ":/Users/me/db/data"
nfsmountdbinit:
driver: local
driver_opts:
type: nfs
o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3
device: ":/Users/me/db/initdb"
services:
## POSTGRES DATABASE
db:
image: postgres:9.6
privileged: true
volumes:
#- ./services/db/initdb:/docker-entrypoint-initdb.d
#- ./services/db/app:/var/lib/postgresql/data
- nfsmountdbinit:/docker-entrypoint-initdb.d
- nfsmountdbdata:/var/lib/postgresql/data
ports:
- 5432:5432
但是当容器db启动时,它会频繁抱怨 chown: changing ownership of '/var/lib/postgresql/data/base/**/**': Operation not permitted
。这让我感到非常困惑,因为我已经做了一些事情(在nfs中配置了no_root_squash),以解决这个问题。但它就是不起作用。我的理解有什么问题吗?我正在使用Mac Mojave和Docker桌面版2.0.0.0稳定版。