我正在将dovecot
设置为Docker容器。我想通过NFS将Maildir
存储在NAS上。
我正在创建这样的码头卷:
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
试图访问Maildir
作为vmail
用户的事实有关,并且该用户在NFS共享上没有权限 - 但即使让每个人都在NFS共享上写入访问权限也没有有所作为。
我正在寻找任何建议,以使此NFS音量正确安装到我的Docker容器中。
问候 Stheine
同时,我发现了这个问题。要解决此问题,我必须在useradd
命令中删除-m
,以防止其创建/home/vmail
目录:
RUN useradd -p vmail -s /bin/false vmail
VOLUME /home/vmail
因为如果存在,则将卷安装到同一位置,因此Docker试图将现有文件夹数据复制到卷中,并将chown
复制到卷的所有权中。由于该卷通过NAS来自NAS的事实没有适当的UID,但是nobody
-和chown
失败。
我找到了nocopy
的引用,以防止Docker这样做,但是我还没有想到如何在docker create
语句中设置该码头。