2016-09-15 25 views
7

大きなファイル(ゲノムデータを含むため、サイズが〜10GBに達する)を使用するDockerイメージ(したがってそのイメージのコンテナ)を作成する必要があります。Dockerコンテナの巨大なファイル

どのように使用を最適化する必要がありますか?コンテナにそれらを含めるはずですか(COPY large_folder large_folder_in_containerなど)?そのようなファイルを参照するより良い方法はありますか?要は、私のプライベートレポジトリにそのようなコンテナ(10GB以上)をプッシュするのは奇妙に聞こえるということです。これらのGBをまとめて梱包することなく、一種のボリュームをコンテナに取り付ける方法があるのだろうかと思います。

ありがとうございます。

答えて

5

私はそれらをコンテナに入れようとしていますか(COPY large_folder large_folder_in_containerなど)?

その場合、画像、ない容器の中にそれらが含まれます:あなたはそのイメージから20個のコンテナを起動することができ、使用される実際のディスク容量は、まだ10ギガバイトになります。

最初のイメージから別のイメージを作成すると、レイヤードファイルシステムは親イメージのレイヤーを再利用し、新しいイメージは10GBになります。

+0

これは確かに便利です。しかし、私が行ってレジストリから画像をポップアップして(コンテナを実行するために)システムのスナップが心配です。私はこれをCI/CDパイプラインに適合させようとしています。これは、(展開段階中に)新しいOpenStackインスタンス(Packer経由)にコンテナをロードする必要があります。そのようなインスタンスは常に異なるので、これは、新しく作成されたOpenStackインスタンスに巨大なコンテナをロードするために、CDパイプラインを通過するたびに必要になります。これは最高の解決法ですか? – Eleanore

+0

@Eleanoreイメージがスレーブのローカルドッカーレジストリにロードされると、コンテナがすぐに開始されます。しかし、画像が変わった場合は、前の画像に基づいて新しい画像を増分的に作成し、変更のみを含めるようにしてください。それは言われている、もし*すべての* 10GBの1つの画像から次の変更...あなたは本当に問題があります。 – VonC

4

このようなファイルを参照する方法はありますか?

すでにデータを配布する方法がある場合は、「バインドマウント」を使用してボリュームをコンテナに接続します。

このようにしてイメージを変更することができ、大きなデータセットを毎回再ダウンロードする必要がなくなります。

FROM scratch 
COPY dataset /dataset 
VOLUME /dataset 

から:あなたが大規模なデータセットを配布するために、レジストリを使用しますが、個別に設定されているデータへの変更を管理したいと思った場合は

は、あなたがこのようなDockerfileとデータボリュームのコンテナを使用することができますあなたのアプリケーションコンテナには、次のものを使用してそのボリュームをアタッチできます。https://docs.docker.com/engine/tutorials/dockervolumes/はあなたが望むものです。