動機
以下の動機で、Docker でPython環境を構築した。
- Pythonバージョンを気軽に変更して実験したい
- Anaconda よりも移植性を高めたい
事前準備
正しく Docker がインストールされてることが前提。
手順:WSL2 Ubuntu に Docker をインストールする手順
ディレクトリ構成
1 2 3 4 5 | docker_python/ ├ Dockerfile ├ docker-compose.yml └ app/ └ sample.py |
Windowsターミナルから Ubuntu を開いて、docker_pythonフォルダを作成。
Dockerfile を作成
こちら からPythonバージョンを選ぶ。
以下では 3.9.10-buster を指定。
jupyterlab 3.2.8 もインストールする設定。(お好みで)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | FROM python:3.9.10-buster USER root RUN apt-get update RUN apt-get -y install locales && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP:ja ENV LC_ALL ja_JP.UTF-8 ENV TZ JST-9 ENV TERM xterm RUN apt-get install -y vim less RUN pip install --upgrade pip RUN pip install --upgrade setuptools RUN pip install jupyterlab==3.2.8 |
docker-compose.yml を作成
Dockerfile を使用するので image ではなく build を使用。
1 2 3 4 5 6 7 8 9 10 | version: '3' services: python: restart: always build: . container_name: 'Jupyter' working_dir: '/root/app' tty: true volumes: - ./app:/root/app |
sample.py を作成
1 | print ( "Hello" ) |
Dockerイメージ作成、コンテナビルド、コンテナ起動
1 2 | cd docker_python/ docker-compose up -d --build |
イメージとコンテナの確認
1 2 | docker image ls docker container ls |
コンテナへの接続
docker-compose.yml の services名 を指定。
1 | docker-compose exec python bash |
Python実行
1 | python sample.py |
コンテナの削除
1 2 | exit docker-compose down |
コンテナの再起動
1 | docker-compose up -d |
JupyterLab をブラウザで使う
1 | docker run - v $PWD /app : /root/app -w /root/app -it -- rm -p 7777:8888 docker_python_python jupyter-lab --ip 0.0.0.0 --allow-root -b localhost |
http://127.0.0.1:7777 にアクセスし、token をコピペして入力すれば JupyterLab 使用可能。
Ctrl + C で JupyterLabサーバーを終了。