Docker

PythonのDockerイメージでPythonプログラムを実行してみた

Docker公式のDockerレジストリ「Docker Hub」には、さまざまなDockerイメージが格納されている。

今回は、PythonのDockerイメージを利用して、PythonライブラリをインストールしPythonプログラムを実行してみたので、その手順を共有する。

今回利用するDockerイメージ「pyhon」は、以下の場所に格納されている。今回は「24.10」タグを利用する。
https://hub.docker.com/_/python

DockerPythonイメージ_1 DockerPythonイメージ_2

前提条件

以下の手順に従って、Windows端末上に、Docker Desktopをインストール済であること。

Windows端末上に「Docker Desktop」をインストールしてみた「Docker Desktop」とは、ローカル環境にDockerコンテナを用いた開発環境を導入するためのソフトウェアのことをいう。今回は...



Dockerコンテナ上でのPythonプログラムの実行

Pythonを含むDockerコンテナを起動し、DockerコンテナにログインしPythonプログラムを実行できるようにする。その手順は、以下の通り。

1) 以下のように、特定のフォルダ内に「Dockerfile」、インストールするPythonライブラリ「requirements.txt」、実行するPythonプログラム「decision_tree_sample.py」を配置する。
Python Dockerコンテナ上でのPythonプログラムの実行_1_1

それぞれのファイルの中身は以下の通りで、decision_tree_sample.pyは、Linuxサーバ上で動かせるよう、文字コードをUTF-8・改行コードをLFとしている。

Python Dockerコンテナ上でのPythonプログラムの実行_1_2

なお、Dockerfileの記載は、以下のページを参考にしている。
https://toukei-lab.com/docker_python

2) コマンドプロンプトを起動し、「Dockerfile」が入っているフォルダに移動後、「docker build -t (Dockerイメージ名) (Dockerfileのパス)」コマンドを実行し、Dockerfileに従ったDockerイメージを作成する。
Python Dockerコンテナ上でのPythonプログラムの実行_2_1

なお、1回目に「docker build -t (Dockerイメージ名) (Dockerfileのパス)」コマンドを実行した場合の表示は、以下の通りで、少し時間がかかっていた。
Python Dockerコンテナ上でのPythonプログラムの実行_2_2

3)「docker image ls」コマンドで、2)で作成されたDockerイメージを確認する。
Python Dockerコンテナ上でのPythonプログラムの実行_3_1

Docker Desktop上でも、以下のように、2)で作成されたDockerイメージが確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_3_2

4)「docker container run -it -d (Dockerイメージ名)」を実行し、Dockerコンテナを作成・起動する。
Python Dockerコンテナ上でのPythonプログラムの実行_4

なお、オプション「-it」で、コンテナがすぐに終了しないようにし、オプション「-d」で、コンテナをバックグラウンドで起動するようにしている。

5)「docker container ls」コマンドで、4)で起動したDockerコンテナが作成され、起動していることが確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_5_1

Docker Desktop上でも、以下のように、4)で起動したDockerコンテナが作成され、起動していることが確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_5_2

6)「docker exec -it (コンテナID) /bin/bash」を実行すると、以下のように、4)で起動したDockerコンテナにログインすることができる。
Python Dockerコンテナ上でのPythonプログラムの実行_6

7) 4)で起動したDockerコンテナ内で、Pythonプログラム「decision_tree_sample.py」を実行すると、プログラムが正常終了し、画像ファイル「decision_tree_graph.png」が出力されることが確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_7

8) exitコマンドを実行すると、以下のように、4)で起動したDockerコンテナからログアウトできる。
Python Dockerコンテナ上でのPythonプログラムの実行_8

9)「docker cp (コンテナID):(取得したいファイルパス) (コピー先ディレクトリ)」コマンドを実行すると、以下のように、4)で起動したDockerコンテナ上のファイルを、ローカルに取得できる。
Python Dockerコンテナ上でのPythonプログラムの実行_9_1

ローカルにコピーされたファイルの中身は、以下の通り。
Python Dockerコンテナ上でのPythonプログラムの実行_9_2

Python Dockerコンテナ上でのPythonプログラムの実行_9_3

10)「docker container stop (コンテナID)」コマンドを実行すると、以下のように、4)で起動したDockerコンテナが停止することが確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_10_1

Docker Desktop上でも、以下のように、4)で起動したDockerコンテナの停止が確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_10_2

11)「docker container start (コンテナID)」コマンドを実行すると、以下のように、Dockerコンテナが起動することが確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_11_1

なお、既に存在するDockerコンテナを起動するには、docker container runコマンドでなく、docker container startコマンドを実行する。

Docker Desktop上でも、以下のように、Dockerコンテナの起動が確認できる。
Python Dockerコンテナ上でのPythonプログラムの実行_11_2

12)「docker exec -it (コンテナID) /bin/bash」を実行すると、先ほどと同様に、11)で起動したDockerコンテナにログインすることができる。
Python Dockerコンテナ上でのPythonプログラムの実行_12

要点まとめ

  • Docker公式のDockerレジストリ「Docker Hub」には、さまざまなDockerイメージが格納されていて、Pythonをインストール済のDockerイメージも利用することができる。