Docker卷NFS uid

问题描述 投票:1回答:1

我正在设置dovecot作为docker容器。我想通过NFS在NAS上存储Maildir

我正在创建这样的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试图以Maildir用户访问vmail,并且该用户没有NFS共享权限这一事实有关 - 但即使给予每个人对NFS共享的写访问权也不做出改变。

我正在寻找任何建议,以便将这个NFS卷正确安装到我的docker容器中。

关心StHeine

docker nfs docker-volume dovecot
1个回答
0
投票

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

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

因为如果存在,将卷安装到同一个地方,docker会尝试将现有的文件夹数据复制到卷中,并将chown复制到卷的所有权。由于来自NAS的卷来自NFS的事实没有适当的uid,但nobody - 和chown失败。

我找到了对nocopy的引用,以防止docker这样做,但我还没想到如何在docker create语句中设置它。

© www.soinside.com 2019 - 2024. All rights reserved.