我有一个基于Dockerfile和我找到的这里脚本的Dockerized内核服务器。
在我的Ubuntu主机中,我可以使用接口docker0的IP地址来挂载卷。
$ 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来安装时(即使是从我的主机系统),它表示拒绝许可:
$ 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时,我得到了以下内容:
$ 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命令更改错误消息:
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挂载将产生相同的错误消息:
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选项时,我得到以下信息:
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发布于 2017-02-20 12:26:18
由于您没有提供所使用的docker run命令行,所以我假设您使用了链接Github中的示例:
docker run -d --name nfs --privileged cpuguy83/nfs-server /path/to/share /path/to/share2 /path/to/shareN这会导致NFS端口不被公开,因此只能通过私有端口IP访问。请尝试:
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来挂载它。
请注意,您可能必须先删除旧容器:
docker rm -f nfshttps://stackoverflow.com/questions/42344308
复制相似问题