我在尝试解决这个问题时遇到了障碍。我在两个节点上运行 docker swarm,并为我的 synology 创建了一个 nfs 卷。
容器内部:
root@container:/data# ls -ltr
drwxr-xr-x 4 root root 4096 Jun 24 22:59 unprocessed
缺少目录。如果我通过 ssh 进入主机并检查那里的 docker 挂载,我会看到以下内容:
root@box:/var/lib/docker/volumes/vol_multimedia/_data# ls -ltr
total 4
drwxrwxrwx 1 1024 users 0 Sep 6 2021 images
drwxrwxrwx 1 1024 users 38 Dec 19 2021 unprocessed
drwxrwxrwx 1 1024 users 66 Apr 1 08:39 processed
-rwxrwxrwx 1 1026 users 41 May 29 23:21 multimedia-readme.txt
drwxrwxrwx 1 root root 36 Jun 3 22:47 '#recycle'
这正是我期望看到的。为什么在 docker 容器中只能看到一部分文件?
我用来创建卷的docker命令是
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=synology.local,rw,soft,nfsvers=4 \
--opt device=:/volume1/multimedia \
vol_multimedia
撰写文件看起来像
version: "3.8"
services:
jellyfin:
# ... removed for brevity
volumes:
- type: volume
source: vol_multimedia
target: /data
# ... removed for brevity
volumes:
vol_multimedia:
external: true
更新:我上面说的似乎有点误导。有问题的容器在同一个集群的另一个节点上运行。一个节点是正确的,但另一个节点不正确。同一个集群中的两个节点的行为却不同,这太奇怪了。
答案1
我从来没有让它工作过。我最终在主机上安装了 NFS 共享并执行了绑定卷。