お問い合わせはこちら

【入門】DockerでPythonを動かす環境構築の手順

公開
更新
DockerでPythonを動かす

Dockerを使えば、Python環境を手軽に用意できる上に、いくつかのメリットもあります。そのためPython環境を準備する必要がある場合は、Dockerの利用を検討したいところです。

この記事では、そもそもDockerとは何かといった基本から、DockerでPython環境を構築するメリット・手順を解説します。あわせてPythonでの環境を効率化するのに役立つ、JupyterLabへアクセスする手順も紹介するので参考にして下さい。

そもそもDockerとは?【軽快に動作する仮想環境】

Dockerとはコンテナ型仮想化技術により、軽快に動作するアプリケーションの実行環境を準備できるプラットフォームです。コンテナ型仮想化では、ホストOSのカーネルを共有することにより、従来の仮想マシンより軽快な処理能力を実現しています。

Docker上でPython環境を構築するメリット

アプリケーションの実行環境を手軽に確保できるDockerは、Pythonを使う場合にも適しています。以下、Python環境をDocker上で構築することで、どのようなメリットがあるかみていきましょう。

同じ環境を簡単に共有できる

Dockerを使うことで、OSやミドルウェアの違いに関係なく同じアプリケーションの実行環境を共有できます。たとえば会社のPCと、リモートワークの際に使う自宅PCなどで、(OSなどの違いがあっても)同じPython環境を簡単に共有できるわけです。

手軽に環境の作り直しができる

Python環境を使い続けていると、予期しない不具合などでその環境が使えなくなることも少なくありません。そんな場合でも、Dockerならその環境を一旦削除し、すぐに新しい環境を用意するのも容易です。同じPython環境を用意するのに、手間も時間もかかりません。

簡単に複数の環境を準備して使える

Pythonのアップデートがあったときに、バージョンアップをするのは簡単ではありません。バージョンアップをすることにより、既存の設定で不具合が起きたり衝突が発生したりなどでその環境が使えなくなることもあります。

その点、Dockerであれば元の環境を残したまま、新しいバージョンの環境を構築して使うのも簡単です。DockerならPythonのバージョンアップにも、スムーズに対応できます。

>Docker CEをテンプレ利用できる日額20円~のKAGOYA CLOUD VPS!

Docker上でPython環境を構築する手順

Dockerであれば、Python環境を速やかに構築可能です。以下、Docker上でPython環境を構築する手順をみていきましょう。

※ホストOSはUbuntu22.04です。
※Docker+Docker Compose環境は構築済であるものとします。
 Ubuntu22.04上で、Docker+Docker Compose環境を構築する手順については、以下記事を参考にして下さい。

【入門】Docker Composeとは?インストールと使い方

【入門】Docker Composeとは?インストールと使い方

Docker Composeは、Dockerを日常的によく使う人程役立つツールです。多くのDockerコンテナを操作する必要があるケースでは、Docker Composeを使うことで作業の負担が大幅に軽減されます。一方で、Docker Composeとは何かや使い方について知らない方も多いのではないでしょうか。 この記事ではDocker Composeの概要と、インスト―ル方法を解説しています。そ…

Python環境の構築

まずは、必要なファイルを保存するディレクトリを作成します。

mkdir docker-jupyterlab
mkdir docker-jupyterlab/optwork

作成したディレクトリ(docker-jupyterlab)へ移動します。

cd docker-jupyterlab

Dockerfile(Dockerコンテナの設計図)を作成します。

vi Dockerfile

以下の内容をファイルに書き込んでください。

FROM python:3

RUN apt-get update
RUN pip install --upgrade pip
RUN python -m pip install jupyterlab

※vi エディタの使い方
キーボードの「i」キーで、編集が可能な入力モードになります。矢印キーで編集したい箇所にカーソルを移動して編集していきます。編集が完了したら「Esc」キーで入力モードを終了した上で、「:wq」と入力し「Enter」キーを押すことで編集内容を保存できます。
※これ以降、viエディタで同様の作業が続きます。

次にcompose.yaml(Dockerコンテナの構築・稼働手順をまとめた指示書)を作成します。

vi compose.yaml

以下の内容をファイルに書き込んでください。

services:
jupyterlab:
build: .
image: jupyterlab-test-img
container_name: jupyterlab-test
working_dir: /work
volumes:
- ./work:/work
ports:
- "8888:8888"
command:
jupyter-lab --ip 0.0.0.0 --allow-root -b localhost

※対話型開発環境「JupyterLab」へリモートからアクセスするための設定を含んでいます。
 JupyterLabの概要については後述しておりますので、参考にして下さい。

workディレクトリへ移動します。

cd work

Pythonのサンプルプログラムを作成します。

vi sample.py

ここでは、「hello world」と画面に表示される簡単なプログラムを作成します。以下内容をファイルに書き込んでください。

print("Hello World")

docker-jupyterlabディレクトリに戻ります。

cd ..

作成したDockerfileとdocker-compose.ymlを使い、イメージとコンテナの作成、コンテナの起動を実行します。

docker compose up -d --build

コンテナが正常に起動したか確認します。

docker container ls

コンテナが正常に起動した場合、以下のような結果が表示されます。

Python環境(コンテナ)へ接続しサンプルのプログラムを走らせる

次に構築済のPython環境(コンテナ)へ接続し、前項で作成したサンプルプログラムを走らせる手順をみていきましょう。

Python環境へ接続します。

docker compose exec -it jupyterlab-test bash

Python用のライブラリをインストールします。

python3 -m pip install numpy

前項で作成したサンプルのプログラムを走らせてみます。

python3 sample.py

以下のような結果が表示されます。

JupyterLabへアクセスする手順

JupyterLabとは、Webブラウザ上で動作するPythonにも対応した対話型開発環境です。JupyterLabを使えば、記述したPythonの実行結果をリアルタイムに確認できます。

前項では、Docker上にPython環境を構築しました。本項では、JupyterLabへアクセスする手順をみていきましょう。

前項で、Jupyterlabへリモートからアクセスできるように設定しました。

そのため以下URLへアクセスすると、Jupyterlabが表示されます。

http://dockerがインストールされたサーバーのIPアドレス:8888

たとえば「dockerがインストールされたサーバーのIPアドレス」が「192.0.2.10」であれば、以下URLへアクセスします。

http:// 192.0.2.10:8888

※以下Jupyterlabのイメージキャプチャです。

「password or token:」の欄に、以下コマンドで調べた「token」を入力し、「Log in」をクリックしてください。

docker logs jupyterlab-test | tail

※dockerのログが表示され「token=」の後に続く長い文字列がtokenになります。

ログインすると、以下のようなJupyterlabの管理画面が表示されます。

※Jupyterlabについて、より詳しい情報は以下公式サイトで確認下さい。

https://jupyter.org/

まとめ

Dockerはコンテナ型仮想化技術により、軽快に動作するアプリケーションの実行環境を確保するプラットフォームです。Dockerを使うことで、Python環境を手軽に構築できる上に、環境の共有や作り直しも容易になります。

またDockerを使えば、同じ環境を複数用意するのも簡単です。Dockerを利用し、対話型開発環境「JupyterLab」を利用することもできます。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。