Docker卷NFS uid

我正在设立dovecot作为docker集装箱。 我想在NAS上通过NFS存储Maildir

我正在创build像这样的docker卷:

 docker volume create \ --driver local \ --opt type=nfs \ --opt o=addr=<ip>,rw \ --opt device=:/vmail \ vmail 

Dockerfile ,我有:

 RUN useradd -m -p vmail -s /bin/false vmail VOLUME /home/vmail 

并运行docker集装箱,我打电话给:

 docker run \ -dit \ -p 993:993 \ --mount source=vmail,target=/home/vmail \ my_dovecot 

但是结果我得到:

 docker: Error response from daemon: chown /var/lib/docker/volumes/vmail/_data: operation not permitted. 

这个问题显然与我挂载NFS卷的方式有关,如果我删除了--mount语句 – 它工作正常(但显然不能从NAS访问我的Maildir数据)。 我很确定这是与dovecot尝试作为vmail用户访问Maildir并且该用户没有NFS共享权限的事实相关的 – 但是即使每个人都可以在NFS共享上写入访问权限做出改变。

我正在寻找任何build议,让这个NFS卷正确地装入我的docker集装箱。

问候StHeine

同时我发现了这个问题。 要解决这个问题,我不得不删除useradd命令中的-m ,以防止它创build/home/vmail目录:

 RUN useradd -p vmail -s /bin/false vmail VOLUME /home/vmail 

因为如果存在的话,将卷挂载到同一个地方,docker会尝试将现有的文件夹数据复制到卷中,并将其chown到卷的所有权。 由于从NAS通过NFS来的卷是没有适当的用户名,但nobody – 和chown失败。

我发现引用了nocopy来防止nocopy这样做,但是我还没有想到如何在docker create语句中设置它。