2017-06-29 17 views
0

ローカルネットワーク上にファイルを生成するマシンがあります。 Dockerは低電力のシングルボードコンピュータであるため、Dockerは動作しません。私はDockerコンテナを書いて、サーバ上で実行してこれらのファイルを取り込み、処理し、処理されたファイルを吐き出す。別のマシンからドッカーコンテナにファイルを取り込む方法は?

私の問題は、マシンからDockerコンテナにファイルを転送して処理することです。私はscpを使用すると思っていましたが、Dockerのコンテナにはsshdが実行されていないため、動作しません。

Dockerボリュームを使用する方法はありません。処理するファイルを生成するデバイスは、Dockerを実行しているホストとは別のものです。 scpは、Dockerコンテナ、VM、または実際のマシンで処理されているかどうかを知らずに、ファイルをコピーすることができるため、きれいな方法です。

この時点で私のオプションは何ですか?私はこれを(S)FTPまたはHTTP(S)で試してやってみるべきですか?より良い方法がありますか?

+0

Dockerは、あなたが「低電力シングルボード」と言ったようなマシンに関しては、私が考慮すると思われるオーバーヘッドは導入していません。 Dockerは実際には、Linuxカーネルにcgroupと名前空間を設定し、すでに実行中のカーネルで実行されているコンテナ化されたプロセスを設定します。この低電力シングルボードコンピュータのアーキテクチャー用に利用できるドッカーパッケージがある場合、ドッカーコンテナをかなり簡単に実行できるはずです。 – programmerq

答えて

0

これはおそらく、dockerコンテナにsshdをインストールしてからscpを使用するのに適しています。

sshd、sftp、または別のプロトコルベースのファイル転送サービスをコンテナにインストールしても、それほど大きな違いはありません。

私が見ることができる他のオプションは、ファイルを生成するコンピュータを持っていて、ドッキング・コンテナがそれらに到達できるどこかにそれらを送信することです。おそらく共有ネットワークフォルダ。

ドッカーコンテナはネットワークドライブを直接マウントし、マウントされたフォルダからファイルを取得することができます。

0

NFSについてはどうですか?あなたはNFSサーバーを実行し、データを保存するためにボリュームをマウントし、現在の1の次の第二ドッカーコンテナを実行できます。

docker volume create mydata 
docker run -d --privileged --restart=always \ 
-v mydata:/nfs \ 
-e NFS_EXPORT_DIR_1=/nfs \ 
-e NFS_EXPORT_DOMAIN_1=\* \ 
-e NFS_EXPORT_OPTIONS_1=ro,insecure,no_subtree_check,no_root_squash,fsid=1 \ 
-p 111:111 -p 111:111/udp \ 
-p 2049:2049 -p 2049:2049/udp \ 
-p 32765:32765 -p 32765:32765/udp \ 
-p 32766:32766 -p 32766:32766/udp \ 
-p 32767:32767 -p 32767:32767/udp \ 
fuzzle/docker-nfs-server:latest 

その後、あなたは同じボリュームをマウントして、第二の容器内のデータを取り込む:

docker run -d --name myingester -v mydata:/path/for/processing myingesterimage 

これで、データプロデューサのNFSフォルダ(DockerホストIPを使用)を書き込み先のフォルダにマウントするだけで、データがボリュームで利用可能になります。

これを後でdocker-compose.ymlファイルにラップして並べて配置することができます(私はその練習をあなたに任せます)。画像例はhttps://hub.docker.com/r/fuzzle/docker-nfs-server/です。しかし、他にも多くのNFSサーバーコンテナの例があるようです。

関連する問題