大きなファイル(ゲノムデータを含み、サイズが最大10GBに達する)を使用するDockerイメージ(およびその結果としてそのイメージからのコンテナー)を作成する必要があります。
使用方法を最適化するにはどうすればよいですか?それらをコンテナに含めることになっていますか(COPY large_folder large_folder_in_container
など)?そのようなファイルを参照するより良い方法はありますか?ポイントは、私が自分のプライベートリポジトリにそのようなコンテナ(> 10GB)をプッシュするのは奇妙に聞こえるということです。これらのGBをすべて一緒にパックせずに、コンテナに一種のボリュームをアタッチする方法はあるのでしょうか。
ありがとうございました。
それらをコンテナに含めることになっていますか(
COPY large_folder large_folder_in_container
など)?
これを行うと、コンテナではなくimageに含まれます。そのイメージから20のコンテナを起動できますが、実際に使用されるディスク容量は10 GBのままです。
最初のイメージから別のイメージを作成する場合、レイヤー化されたファイルシステムは親イメージのレイヤーを再利用し、新しいイメージは「わずか」10GBのままです。
そのようなファイルを参照するより良い方法はありますか?
データを配布する方法がすでにある場合は、「バインドマウント」を使用してボリュームをコンテナーにアタッチします。
docker run -v /path/to/data/on/Host:/path/to/data/in/container <image> ...
そうすれば、イメージを変更でき、毎回大きなデータセットを再ダウンロードする必要がありません。
レジストリを使用して大規模なデータセットを配布したいが、データセットへの変更を個別に管理したい場合は、次のようなDockerfile
を持つデータボリュームコンテナを使用できます。
FROM tianon/true
COPY dataset /dataset
VOLUME /dataset
アプリケーションコンテナから、次を使用してそのボリュームをアタッチできます。
docker run -d --name dataset <data volume image name>
docker run --volumes-from dataset <image> ...
いずれにせよ、私は https://docs.docker.com/engine/tutorials/dockervolumes/ があなたが望むものだと思います。