私は再現可能なデータサイエンスワークに非常に興味があります。そのために、コード、データ、環境の設定を束ねるプラットフォームとしてDockerを探求しています。私の最初の簡単な試みは、必要なデータを含むDocker画像です(link)。ドッカーを使用したデータボリュームの画像
ただし、これは最初の手順にすぎません。この例では、データはイメージの一部であるため、イメージがコンテナに読み込まれると、データは既にそこにあります。私の次の目的は、分析コードとデータを切り離すことです。私が理解する限り、それはコード(code
)とデータ(data
)の2つのコンテナを持つことを意味します。
FROM continuumio/miniconda3
RUN conda install ipython
とdata
用:
data.csv
は、私がイメージにコピーしていたデータファイルである
FROM atlassian/ubuntu-minimal
COPY data.csv /tmp
私はシンプルDockerfile
を使用code
するため
。私は他の一つの容器にpingを実行することができますこれらのステップの後docker network create data-testing
、おそらく:ネットワークを開始した後
docker run -i -t --name code --net=data-testing --net-alias=code drorata/minimal-python /bin/bash
docker run -i -t --name data --net=data-testing --net-alias=data drorata/data-image /bin/bash
:thisソリューションで説明したように、私はそれらを実行することができ、これらの2枚の画像を構築した後
data.csv
にcode
からアクセスしてください。しかし、私はこれが最適な解決策ではないと感じており、良い練習とはみなされません。
データにアクセスできるコンテナを使用するとよい方法は何でしょうか?私は少しだけdata volumesを読んでいますが、私はそれらをどのように利用するのか、それらをイメージに変える方法を理解していません。
そして 'Dockerfile'を使って' code'画像にCSVをコピーするのはどうですか?私は研究の共有を簡素化しようとしており、その目的のためにコードとデータを提供する必要があります。 1つの興味深いアプローチは、2つの異なるイメージと、これを独立して提供することです。初期配信の場合は – Dror
、ファイルを画像にコピーしてください。私の答えがどこに来るのかは、データセットの更新と配布のために、データのために第2のイメージを配布する必要はありません。彼らにデータを与えてください。 –
コンテナの実行後に呼び出される起動フックはいくつかありますか?このフックは、リポジトリからデータをプルする必要があります。 – Dror