今回は実験データ自体の解析の話ではなく、どのような環境で解析を行ったのかという「環境」の管理について書きたいと思います。大学などで研究をしていて論文としてその成果をまとめる場合、関連するデータや解析プログラムは所属する大学もしくは研究室に整理して保存しておくことが一般的です。これはもちろん、論文に示されているデータがどのように解析されているのかあとから確認することができるようにしておくためです。
実験データの解析を例えば Python で行っている場合、解析の再現性を担保するためにはデータファイルのみならず解析を行っている環境(ライブラリのバージョンなど)も重要になってきます。そこで、この記事では Docker を使ってこの環境の管理をしたという話をします。
動作環境
- Windows10 Home
- WSL2 (Ubuntu 18.04)
Docker image の作成
FROM jupyter/base-notebook:python-3.8.6 COPY ./requirements.txt . RUN pip install -r requirements.txt EXPOSE 8888
base image としては jupyter notebook のイメージが Docker Hub にあるのでこれを使います。タグは latest
のものを使うと Docker Hub が更新されたときに中身が変わってしまうので python-3.8.6
を指定します。
解析に使うライブラリは requirements.txt
にバージョンを明記して書いておきます。
docker-compose.yaml の作成
実際にこのコンテナを運用するときには、ホストから Jupyter Notebook を編集するためにポートフォワーディングをしたり、解析データをマウントしたりします。これらはコンテナを起動するときに指定することは出来ますが、いちいち書くのは面倒なので docker-compose
を使います。
version: "3" services: my-jupyter: build: . image: my-jupyter:1.0.0 ports: - 8888:8888 volumes: - .:/home/jovyan/ command: jupyter lab
コンテナの実行
コンテナを動かすためには、
docker-compose up
を実行します。もしも Docker image がビルドされていないときにはビルドから開始します。http://localhost:8888
にアクセスしてJupyter Lab が起動すれば成功です。