docker と docker-compose で機械学習のための python 環境を作る

📅 February 22, 2020

⏱️3 min read

サマリー

  • docker を使って、機械学習系のライブラリを実行できる python 3 環境を構築 したのでその備忘録です
  • 方針としては、Dockerfileでイメージを定義して、docker-composeで実行する
  • docker execで docker 環境に入り込んでいじれます

1: 設定ファイルの作成

1.1: Dockerfile の作成

ベースとなるDockerfileを作成していきます。前提として、以下のことに注意してください。

  • requirements.txtを用意している
  • pyhton のバージョンは3.8.0である

雑に例をあげるとすれば、requirements.txtは次のような感じになります。

numpy
pandas
matplotlib
scikit-learn

Dockerfileは次のようになります。(シンプル イズ ザ ベスト)

# Dockerfile
FROM python:3.8.0

RUN apt-get update \
    && apt-get upgrade -y \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && pip install --upgrade pip

WORKDIR /usr/app

COPY requirements.txt ${PWD}
RUN pip install --no-cache-dir -r requirements.txt

# COPY必要か問題はあるが、一応残しとく派です
COPY . .

/usr/app以下に、自らのファイルたちを展開していきます。

余談ですがDockerfile を書くベスト・プラクティス - Docker ドキュメントは参考になりそうです

1.2: docker-compose.yaml の作成

version: '3'
services:
  your-sevice-name:
    container_name: 'your-container-name'
    tty: true
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/usr/app

version は3を利用しています。 色々設定ができるので、公式リファレンスに目を通して置くといつか良いことが起きるかもしれません。

また、volumesで、ローカルを参照するように設定していることに注意してください。 ローカルでのファイルの変更をリアルタイムに反映させるためによく使われるテクニックだと思います。

2: 実行

$ docker exec -it your-container-name sh

上のコマンドを実行することで環境に入れるので、スクリプトを実行したり、環境構築を進めたりすると良いと思います。

さいごに

docker を使って環境構築をしておくと、

  • ローカル環境にやさしい
  • 環境の受け渡しが楽になる

というメリットがあるので、おすすめです。

参考