dockerでデータ分析環境を作る

docker
dockerPythonデータ分析

dockerでデータ分析環境を作る方法のメモ。

dockerが使用できる状態であることを前提としている。
また、Kaggleの分析環境を作る方法を例として、環境を作っていく。

スポンサーリンク

目的

最終地点はvscodeでnotebookを扱えるようにすること。
ColabやKaggleのweb上のノートブックが慣れないので、VScodeでノートブックを扱えるようにする。

スポンサーリンク

環境を作る

Jupyterがdocker imageを配布していて、一見簡単に使えそうなのだが、権限の設定やPythonのバージョンの指定方法などが少し使いづらいので、Docker公式のpythonイメージを使う。

  • Jupyter: https://jupyter-docker-stacks.readthedocs.io/en/latest/
  • DockerのPython:https://hub.docker.com/_/python

必要なファイルは以下の3通り。以下のセクションで1ずつ説明する。
その他必要なファイルがあれば、同じディレクトリに入れておく。(Dockerfileに書いたように仮想環境にコピーされる。)

  • Dockerfile
  • requirements.txt
  • Kaggle.json

Dockerfileを作成

適当なディレクトリに移動し、次のようなDockerfileを作成する。

FROM python:3.9
ENV PYTHONNUNBUFFERED 1

WORKDIR /work
COPY requirements.txt /work/
RUN pip install --no-chache-dir -r requirements.txt
COPY . /work/

COPY kaggle.json /root/.kaggle/
RUN chmod 600 /root/.kaggle/kaggle.json

Pythonのバージョンは最新すぎると対応していないライブラリがあるので、3.9を設定。

6行目で分析に必要なライブラリをインストールする。

下2行はKaggle APIを使うため。(使わない場合は削除する。)

requirements.txt

また、同じディレクトリでrequirements.txtを作成する。
こちらのファイルに必要となるライブラリを記述しておく。(あとからでもinstallはできる)

jupyter
kaggle
lightgbm
matplotlib
networkx
numpy
pandas
plotly
scipy
torch

後に追加したら、パッケージ管理のためにここに追記しておくと、クラウド上など別環境で全く同じ環境を作りたい場合に便利。
また、他人に同じ環境を作ってもらう意味でも便利。

Kaggle.json

Kaggle APIを利用するために必要な、認証情報が書かれたファイル。(Kaggle APIを使わない場合はいらない。)

立ち上げる

準備が完了したら、ビルドする。

docker build . --no-cache -t h/kaggle:latest

h/kaggleの部分が名前、latestの部分がバージョンを表す。(名前は好きな文字列を入れていただければ)

次に、コンテナを作成する

docker run -it --rm --name kaggle -p 8888:8888 -v "${PWD}":/work h/kaggle:latest

kaggleはコンテナの名前なので好きな文字列を入れる。
オプションについては以下の通り。

  • -it:コンテナ内でインタラクティブシェルを開く。
  • --rm : コンテナを閉じたら自動で削除。
  • --name kaggle コンテナに名前をつける。kaggleはコンテナの名前なので好きな文字列を入れる。
  • -p 8888:8888 : 8888番ポートを開ける。
  • -v "${PWD}":/work : カレントディレクトリを/workにマウントする。(dockerコンテナ内でファイルを操作してもローカルに変更が反映される。--rmを使う場合は必須。)

次にVSCodeを開き、Remote-containerが入っていることを確認する。

左のメニューからdockerのアイコンをクリック、以下の部分で左クリックし「Attach Visual Studio Code」 で開く。

仮想環境内でVSCodeを開いているので必要なExtensionは適宜入れる。
PythonとJupyterは必須。

以上でおしまい!

スポンサーリンク
H-MEMO

コメント