gpt4 book ai didi

docker - Docker卷NFS uid

转载 作者:行者123 更新时间:2023-12-02 20:09:02 25 4
gpt4 key购买 nike

我正在将dovecot设置为docker容器。我想通过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语句-它可以正常工作(但显然无法从NAS访问我的 Maildir数据)。
我非常确定,这与 dovecot尝试以 Maildir用户身份访问 vmail以及该用户没有NFS共享权限有关,但是即使授予所有人对NFS共享的写访问权限也不会做出改变。

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

问候
斯特海涅

最佳答案

在此期间,我发现了问题。
要解决此问题,我必须在-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语句中进行设置。

关于docker - Docker卷NFS uid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47875115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com