【发布时间】:2018-03-27 15:23:08
【问题描述】:
我撞墙了:(
我尝试在 docker 中使用 NFS 卷通过 docker swarm 共享/访问容器状态数据。但是我已经无法创建工作卷了。 我阅读了很多 SO 线程、docker 文档等。
据我所知,至少有两种方法可以完成这项工作。内置 docker volume 和外部 docker-volume 驱动程序。我更喜欢使用docker volume
我使用一台 FreeBSD 机器作为 NFS 服务器,使用两个 ubuntu 客户端作为 docker 节点。我创建了 NFS 共享并将其手动安装在 ubuntu 机器上:
mount -o v3 -t nfs 10.0.0.108:/usr/srv/docker/registry /mnt
mount | grep nfs
10.0.0.108:/usr/srv/docker on /mnt type nfs (rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=10.0.0.108,mountvers=3,mountport=794,mountproto=udp,local_lock=none,addr=10.0.0.108)
到目前为止一切顺利。现在我尝试创建一个 docker 卷:
docker volume create \
--driver local \
--opt type=nfs \
--opt device=:/usr/srv/docker/registry \
--opt "o=addr=10.0.0.108,vers=3,rw"
registry
这里我尝试了"o=...."的几个版本。
Docker 在创建卷时返回成功...或者它只是写卷名,没有任何注释:)
下一步:测试音量:
docker run --rm -i -v=registry:/tmp/myvolume busybox ls -lA /tmp/myvolume
那是错误“堆积”的时刻。
在 NFS 服务器上:
Mar 27 17:17:51 $host mountd[1002]: mount request denied from 10.0.0.106 for /usr/srv/docker/registry
在 docker 节点上:
docker: Error response from daemon:
error while mounting volume '/var/lib/docker/volumes/registry/_data':
error while mounting volume with options:
type='nfs' device=':/usr/srv/docker/registry' o='addr=10.0.0.108,vers=3,mountaddr=10.0.0.108,mountvers=3':
permission denied.
据我了解文档permission denied 是内核/nfs 客户端的输出。但我不明白为什么会这样。
有什么建议吗?
谢谢!
编辑: 使用的 Docker 版本是:
Docker version 17.12.1-ce, build 7390fc6
【问题讨论】:
-
你用的是哪个版本的docker??
-
我添加了版本,谢谢@AddWebSolutionPvtLtd
-
需要为 NFS 服务器打开端口 111(TCP 和 UDP)和 2049(TCP 和 UDP)。检查您机器上的防火墙规则。
标签: ubuntu docker freebsd volume nfs