首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从外部主机安装文件化NFS份额

从外部主机安装文件化NFS份额
EN

Stack Overflow用户
提问于 2017-02-20 12:13:24
回答 1查看 1.7K关注 0票数 0

我有一个基于Dockerfile和我找到的这里脚本的Dockerized内核服务器。

在我的Ubuntu主机中,我可以使用接口docker0的IP地址来挂载卷。

代码语言:javascript
复制
$ sudo mount -v -t nfs 172.17.0.2:/srv/nfs /mnt

mount.nfs: timeout set for Mon Feb 20 12:57:14 2017
mount.nfs: trying text-based options 'nfsvers=3,addr=172.17.0.2'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 172.17.0.2 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 172.17.0.2 prog 100005 vers 3 prot UDP port 33602

当我尝试使用我的公共IP来安装时(即使是从我的主机系统),它表示拒绝许可:

代码语言:javascript
复制
$ sudo mount -v -t nfs 192.168.120.153:/srv/nfs /mnt

mount.nfs: timeout set for Mon Feb 20 12:57:03 2017
mount.nfs: trying text-based options 'vers=4,addr=192.168.120.153,clientaddr=192.168.120.153'
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.120.153:/srv/nfs

当我尝试使用NFS v3时,我得到了以下内容:

代码语言:javascript
复制
$ sudo mount -v -t nfs -o nfsvers=3 192.168.120.153:/srv/nfs /mnt

mount.nfs: timeout set for Mon Feb 20 12:49:48 2017
mount.nfs: trying text-based options 'nfsvers=3,addr=192.168.120.153'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Program not registered
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Program not registered
mount.nfs: requested NFS version or transport protocol is not supported

由于共享已经可以挂载,所以我假设它是访问/权限问题,而不是服务问题。这个问题背后的原因是什么?

编辑

以下run命令更改错误消息:

代码语言:javascript
复制
docker run -d --privileged \
--name nfs \
-p 2049:2049/tcp \
-p 2049:2049/udp \
-p 111:111/tcp \
-p 111:111/udp \
-p 1066:1066/tcp \
-p 1067:1067/tcp \
-p 1067:1067/udp \
-v /tmp:/srv/nfs \
cpuguy83/nfs-server /srv/nfs

尝试使用v3或v4挂载将产生相同的错误消息:

代码语言:javascript
复制
mount.nfs: mount(2): No such file or directory
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified

我没有运行防火墙,而且我已经检查过rpcbind是否运行在我的主机系统上。当我尝试-o nolock选项时,我得到以下信息:

代码语言:javascript
复制
mount.nfs: trying text-based options 'nolock,nfsvers=3,addr=192.168.120.153'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: portmap query retrying: RPC: Unable to receive
mount.nfs: prog 100003, trying vers=3, prot=17
mount.nfs: portmap query failed: RPC: Unable to receive - Connection refused
EN

回答 1

Stack Overflow用户

发布于 2017-02-20 12:26:18

由于您没有提供所使用的docker run命令行,所以我假设您使用了链接Github中的示例:

代码语言:javascript
复制
docker run -d --name nfs --privileged cpuguy83/nfs-server /path/to/share /path/to/share2 /path/to/shareN

这会导致NFS端口不被公开,因此只能通过私有端口IP访问。请尝试:

代码语言:javascript
复制
docker run -d --name nfs --privileged -p 111:111/udp -p 2049:2049 cpuguy83/nfs-server /path/to/share /path/to/share2 /path/to/shareN

重要的部分是-p 111:111/udp -p 2049:2049

在此之后,您应该能够通过使用公共IP来挂载它。

请注意,您可能必须先删除旧容器:

代码语言:javascript
复制
docker rm -f nfs
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42344308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档