2017-06-19 19 views
1

ストレージボリュームをコンテナ内部にマウントしようとしています。 Linuxのような私は、以下のコマンドDocker container to NAS Storage

これが与える
**mount 10.#.##.###:/nvol1 /tmp** 

を与えられたエラーが、私はコンテナ&ホストサーバからのトラフィックを許可するようにストレージにコンテナとホストIPを追加した「アクセスが拒否されました」。しかし、ストレージボリュームをコンテナにマウントすることはできませんか?何か不足していますか?私はCentos Operating Systemを使用しています。

編集注:既にストレージをDockerホストに正常にマウントし、ホストファイルシステムとコンテナ間で通信を行っています。 を探しているこの新しいテストケースは、Dockerホストにないコンテナのストレージボリュームを直接マウントします。

答えて

1

dockerが提供する隔離の一部を無効にすることなく、コンテナの内部からマウントコマンドを実行することはできません。そうしないと、信頼できないアプリケーションがホストルートファイルシステムをマウントしてエスケープする可能性があります。 Dockerは、コンテナ内のルートユーザーからさまざまな機能を削除することでこれを防ぎます。 NFSマウントの場合

は、あなたは、典型的には2つの方法のいずれかで容器にボリュームとしてこれをマウントします:
  1. マウントNFSホスト上のディレクトリ、および容器にホストディレクトリをマップします。これにより、コンテナ内に加えてホスト上で直接ボリュームを管理することができます。

  2. NFSディレクトリをボリュームとして直接コンテナにマウントします。

    $ docker volume create --driver local \ 
        --opt type=nfs \ 
        --opt o=addr=10.1.23.123,rw \ 
        --opt device=:/nvol1 \ 
        nvol1 
    
    $ docker run -v nvol1:/tmp your_image 
    

    編集:

は、オプション2の場合は、あなたのようなものでボリュームを定義することができますdocker volume createステップをスキップするには、--mountオプションを指定して実行コマンドからこれを行うことができます:

$ docker run -it --rm \ 
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,volume-opt=o=addr=192.168.1.1,volume-opt=device=:/host/path \ 
    foo 
+0

Dockerファイルで指定された形式を追加すると、bash-4.2#docker buildのビルド中にエラーが発生します。 ドッカーデーモン39.42キロバイトにコンテキストを構築送信 ステップ1:ドッカー 不明命令:ドッカー のbash-4.2#よりDockerfile ドッキングウィンドウのボリューム--driver作成ローカル\ --optタイプ= NFS \ --opt O = addr = 10。#。###。###:/ xbbl7nvol1、rw \ --opt device =:/ tmp \ nvol1 – Satte

+0

これらはシェルコマンドであり、Dockerfileのエントリではありません。ビルド時にこれを行うことはできません。実行しようとしていること、実行しているコマンド、使用しているファイルで質問を更新してください。 – BMitch

+0

私は質問を更新しました。 – Satte