2017-12-12 8 views
0

私は、Dockerコンテナを使用するデータ科学者が増えており、再現性のある分析が可能です。外部のサーバーからDockerコンテナにデータをどのようにアクセス/プルしますか?

質問:データをDockerコンテナにダウンロード/プルするにはどうすればよいですか?

データは、URLを介してダウンロード可能で、自然にあなたがDockerfile

wget www.server_to_data.org/path/path/myfile.gz 

にこのような行を追加することができますしかし、私はデータは、それによってキー - と、サーバへのユーザssh、サーバー上に座っている場合ペアは~/.ssh/id_rsa.pubです。私はこれがどのようにセキュリティに敏感に働くかわからない。

通常、この場合、データをダウンロードまたはアクセスするにはどうすればよいですか?

サーバーをマウントする可能性がありますが、コンテナ/ VM内でどのようにアクセスするかわかりません。

+0

データにアクセスするための資格情報(特に対話型ログイン資格情報)が必要な場合は、再現性のある分析が可能であるかどうかは不明です。つまり、あなたの機関の外にいる誰かが、データにアクセスするために必要な資格情報を持っていないということです。あなたの研究機関が研究データセットを外部のユーザーに公開するための確立されたメカニズムを持っていない場合、おそらく最初にそれに対処する必要があります。 – larsks

+1

これは、バインドマウント( 'docker run -v $ HOME/.ssh/id_rsa:/root/.ssh/id_rsa ...')を使用して秘密鍵をコンテナに公開することができます。環境変数として渡すことができます。 – larsks

答えて

1

現在の状況では、サーバー上のデータを取得して、アクセスする必要があるユーザーにキーペアを渡しています。既存のインフラストラクチャを変更せずにそのまま使用したい場合。イメージ内のsshキーのボリュームを設定することによって実行できます。イメージを実行している人は、ボリュームをsshキーに設定してコンテナを起動する必要があります。次に、あなたのようにデータをダウンロードすることができ

docker run -d -v PATH_TO_DRECITORY_HOLDING_SSH_KEY:/home/container_user/.ssh [OTHER OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] 

FROM ubuntu 
#[RUN your installation process] 
VOLUME /home/container_user/.ssh 

を実行し、そのボリュームへのSSHキーの場所をマウントしてコンテナを:Dockerfileと画像内のボリュームに設定し

コンテナの起動時に実行されるスクリプトの一部。

基本的な考え方は、How can I get my ~/.ssh keys into a docker container running locally?

我々は少し疑問をバックアップしている場合、人々は、画像を保存しようとしている場合は、あなたのイメージを使用しようとしているかを正確に聞いて、言っ

(パブリックまたはから持ち上げられますプライベートレポ)とデータの変更頻度は、ニーズを満たすためのユーザーフレンドリーな方法かもしれません。また、ドッカーの作成をコンテナの実行手段にすることを許可した場合、他にも利用可能なオプションがあります。

+0

実行時にボリュームを使用するためにDockerファイルにVOLUMEを設定する必要はありません。おそらく、この場所に暗黙の匿名ボリュームは必要ないので、Dockerfileの変更はおそらく必要ありません。 – programmerq

+0

@programmerq知っておいてよかった、ありがとう! –

+0

@JeffRichards「既存のインフラストラクチャをそのまま使用したい場合」たとえば、私がこのデータを使って実行したいPythonアルゴリズムがあるとしましょう。私はLinux、Python、すべてのPythonライブラリなどを一からインストールするDockerfilesの作成に慣れています。 Dockerコンテナが現在のバージョンのソフトウェアを継承してこれを実行する可能性はありますか? – EB2127

関連する問題