Docker volume NFS uid



我正在将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语句中设置该码头。

最新更新