我正在设置dovecot
作为泊坞窗容器。我想通过NFS将Maildir
存储在NAS上。
我正在创建这样的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
语句 - 它可以正常工作(但显然无法访问我的Maildir
数据NAS)。
我非常确定这与dovecot
尝试访问Maildir
vmail
用户的事实有关,并且该用户没有权限NFS共享 - 但即使给予每个人对NFS共享的访问权限也没有什么区别。
我正在寻找任何建议,以便将此NFS卷正确安装到我的docker容器中。
此致 StHeine
答案 0 :(得分:0)
与此同时我发现了这个问题。
为了解决这个问题,我必须删除-m
命令中的useradd
以防止它创建/home/vmail
目录:
RUN useradd -p vmail -s /bin/false vmail
VOLUME /home/vmail
因为如果存在,将卷安装到同一位置,docker会尝试将现有文件夹数据复制到卷中,并chown
将此卷复制到卷的所有权。由于来自NAS的卷来自NAS,因此没有正确的uid,但nobody
- 和chown
失败。
我找到了nocopy
的引用,以阻止docker这样做,但我还没想到如何在docker create
语句中设置它。