2017-02-20 19 views
-1

私はDockerfileと私はhereを発見したスクリプトに基づいDockerized NFSカーネル・サーバーを持っています。私のUbuntuのホストで外部ホストからDockerized NFS共有をマウント

、私はボリュームをマウントするためのインタフェース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 

共有はすでにマウント可能であるため、アクセス/許可の問題でありサービスの問題ではないと想定しています。この問題の背景には何がありますか?

--- EDIT ---

次の実行コマンドはエラーメッセージを変更します。

V3またはV4今、同じエラーメッセージで結果をマウントしようとし
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 

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 
+0

これはSO –

答えて

1

あなたが使用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 nfs 
+0

のためにオフトピックです、私は次のエラーを取得: '... が正常に7ccbef71a3f5 823a820d7e27b1020afca27bdc8b9f11d6bf97711926015d86e803577ea13744 を建てをdocker:デーモンからのエラー応答:ドライバがエンドポイントnfs(ab8c13199983da6a7ef24ac26c087f7a38da6dcfeb7391ffbadf988173c3f14a)で外部接続をプログラミングできませんでした:userlandプロキシを開始する際にエラーが発生しました:tcp 0.0.0.0:2049:bind:addressがすでに使用中です。 はドッカーコンテナの実行に失敗しました!' Dockerfileの次の行のために、私は予想されるはずだと思います: ' EXPOSE 111/udp 2049/tcp' –

+0

これは、パブリックインターフェイスと同じポートをリッスンしているコンテナホストシステム上で既にNFSを実行しています。 –

+0

私は自分の質問を更新しました。見てください。 –

関連する問題