Dockerを起動しPythonのHelloworldを出力する【Dockerによる環境構築ハンズオン】

Docker を使用して python の環境構築する方法

Docker を使用して python の環境構築を行う方法を解説します。

  • やること:
    1. Dockerのインストール(事前準備推奨)
    2. Dockerfile作成(ソースコードをダウンロードでもいいが、手作業で書いた方が理解が進みます。)
    3. pythonコード作成
    4. buildコマンドの実行と解説
    5. runコマンドの実行と解説
    6. helloworldの確認

Docker入門 関連記事

注意点

使用するPCはWindowsでもMacでもLinuxでも構いません

Docker for Desktopを使用しますので、事前にダウンロードをお願いいたします。

今回行うのは、ソースコードのcloneからpythonのhelloworldまで実施いたします。

DockerでのpythonによるHello world

ソースコードを手っ取り早く取得したい人

以下のGithubからソースコードを取得してください。

Github:https://github.com/kawadasatoshi/PythonImages

または、gitコマンドでcloneしてもいいです。

git clone https://github.com/kawadasatoshi/PythonImages.git

Python Dockerfile の作成(5分)

まずはDockerfileという名前でファイルを作成し、次のコードを入力しましょう。

# python version number:3.9.16
FROM python:3.9.16

# code ... directory for python codes.
WORKDIR /code

# copy localcode to container image.
COPY ./code /code

# upgrade pip command
RUN pip install --upgrade pip 

# install python lib 
RUN pip install -r requirements.txt

Dockerfileとは

Dockerfileとは

Dockerイメージを作成するためのファイルです。

Dockerイメージとは

Dockerコンテナの動作環境となるテンプレートファイルです。Dockerイメージには、OSやアプリケーションからアプリケーションの実行に使われるコマンド、メタデータまで含まれます。

つまり、「DockerfileからDockerイメージが作られて、最終的にDockerコンテナという実態が作られる」 という構図になってます。

from https://www.kagoya.jp/howto/cloud/container/dockerimage/

これらの要素の違いにはいくつかポイントがある。

  • Dockerfile:開発環境段階でいじられることが多い。

  • Docker Image:直接内部をいじられることはあまりない。ただし、コンテナよりは容量が軽いことが多い。その性質から、本番環境、検証環境、ステージング環境を行き来する。

  • Docker Container:実際に動く実態。

これらが、大雑把なDockerコンテナのライフサイクルです。

Dockerfile の内容解説

  • FROM:すでに存在するイメージファイルを取得し、それを元に新しくイメージファイルを作り出す。
FROM python:3.9.16

この場合は、「python:3.9.16」という名前のイメージファイルを取得し、その上に新しいイメージファイルを作り出していきます。

  • WORKDIR:ファイルの作業場所を指定します。
WORKDIR /code

この場合は、/codeディレクトリを指定して作業場所を指定します。

  • COPY:ローカルPCに存在するファイルをイメージ内部にコピーするコマンド
COPY ./code /code
  • RUNLinuxコマンドを実行します。
# upgrade pip command
RUN pip install --upgrade pip 

# install python lib 
RUN pip install -r requirements.txt

今回はpipライブラリのアップデートと、requirements.txtに存在するライブラリをインストールを実行します。

codeディレクトリを作成し、ソースコードを配置

codeという名前のディレクトリをDockerfileと同じ場所に作りましょう。

そして、この中にソースコードを入れていきます。

今回はcodeの中にmain.pyというpythonコードを作ります。

内容は以下のとおりです。

print("hello world")

こちらのコードは"hello world"と出力するだけのコードです。

requirements.txtも作成

次に、requirements.txtを作成します。

このファイルは、インストールするpythonのライブラリーを指定します。

実際にDockerfileを見ると、RUN pip install -r requirements.txtrequirements.txtを指定して、pythonのライブラリーをインストールしていることがわかると思います。

中身はpythonで使用するライブラリを列挙します。

numpy
pandas

docker buildコマンド実行

ここまでできたら、buildコマンドでDockerfileからイメージファイルを作成します。

docker image build -t pythonconsole .
  • docker image buildでは、dockerイメージをビルドし、コンテナを作成する基本的なコマンド

  • -tフラグで、pythonconsoleという名前をつけています。

docker runコマンド実行し、Hellowroldを出力する

先ほど作成した、pythonconsoleイメージコンテナをrunします。

docker run -it -v ./code:/code pythonconsole bash
  • docker runは、dockerコンテナを実行するコマンドです。

  • -itフラグは、コンテナ内部とやりとりするためのコマンドで、bashコマンドと組み合わせることで、ssh接続されたかのように、コンテナ内部からLinuxコマンドを実行することができます。