Dockerコンテナを作成しPythonを追加しアプリを実行してみます。
■環境
Windows10(DockerDesktopインストール済み)
docker version
Client: Cloud integration: v1.0.22 Version: 20.10.12 API version: 1.41 Go version: go1.16.12 Git commit: e91ed57 Built: Mon Dec 13 11:44:07 2021 OS/Arch: windows/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.12 API version: 1.41 (minimum version 1.12) Go version: go1.16.12 Git commit: 459d0df Built: Mon Dec 13 11:43:56 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.12 GitCommit: 7b11cfaabd73bb80907dd23182b9347b4245eb5d runc: Version: 1.0.2 GitCommit: v1.0.2-0-g52b36a2 docker-init: Version: 0.19.0 GitCommit: de40ad0
■Dockerfileを作成する
Dockerコンテナを作成しPythonを追加しアプリを実行してみますが、その前にDockerfileを作成します。
作成するために今回は「C:\Users\user_(フォルダパス)」内に「new_test」という新しいフォルダを作成します。このフォルダ内に、私の場合は「新しいテキスト ドキュメント.txt」という新しいテキストを作成し、ファイル名を「Dockerfile」に変更し、作成します。
作成したDockerfileをコードエディタで開きます。
■コード
FROM python:3 ADD test.py / CMD ["python","./test.py"]
「FROM」は、今後の指示に取り組むためのベースイメージを設定・定義します。今回はPythonバージョン3が、ベースイメージレイヤーとして設定しています。
「ADD」は、ファイル及びディレクトリを指定されたソースから指定された宛先にコピーするための指示です。コピー元は、ローカルパスまたは外部URLです。
「CMD」は、コンテナ作成時に実行されるコマンドを設定します。Dockerは、1つのファイルにつき1つのCMD命令しか許可しない。今回はpythonでコピーされたtest.pyを実行するというものです。
この内容をDockerfileに記述し、保存します。
■スクリプトを作成する
保存後、今度はスクリプトを作成します。コードエディタを開きます。
■コード
x = eval("1 + 2") print(x) print("こんにちは、テストです。")
今回はxという変数を定義し、その中でeval()を用います。括弧内には引数,パラメータとして数式を渡します。これで計算結果が返され、x変数に格納されます。
格納後、print()でx変数内の情報を出力してみます。またprint()で日本語の文字列も出力してみます。
コードエディタでこのスクリプトを記述し「test.py」という名前で「C:\Users\user_(フォルダパス)」内の「new_test」に保存します。
■Dockerイメージを構築、作成する
保存後、Windows10のコマンドプロンプトを起動します。
>cd new_test
起動後、上記のコマンドを入力し、Enterキーを押します。今回作成したフォルダ「new_test」に移動します。
>docker build -t python-test:1.0 .
移動後、上記のコマンドを入力し、Enterキーを押します。これでイメージをビルドします。イメージ名は、「python-test」となります。また、この際にコロン”:”を用いて、今回はtagを「1.0」としておきます。
[+] Building 128.3s (7/7) FINISHED => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 94B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/python:3 7.1s => [internal] load build context 0.1s => => transferring context: 108B 0.0s => [1/2] FROM docker.io/library/python:3@sha256:bef6fd726fb8825d5cf26933d8477505b14505be1a98394405c8840c1c266b 118.7s => => resolve docker.io/library/python:3@sha256:bef6fd726fb8825d5cf26933d8477505b14505be1a98394405c8840c1c266bdd 0.0s => => sha256:bef6fd726fb8825d5cf26933d8477505b14505be1a98394405c8840c1c266bdd 2.35kB / 2.35kB 0.0s => => sha256:837b16f43b1dcb4cc05e351d3f6f05c07173f8b3a1bf0d4cc02a411e6eca1ea4 2.22kB / 2.22kB 0.0s => => sha256:675cf548c64dd6e33fc62f34b57198ea3f58f8af04e859f6e04311826c31ee0d 8.53kB / 8.53kB 0.0s => => sha256:bf168a6748997eb97b48cc86234b7ff7d8bc907645b9be99013158b3f146b272 5.16MB / 5.16MB 8.0s => => sha256:e604223835ccf02d097187b5a58ca73e8598cadbb16a36202ca1943e97f56f1f 10.88MB / 10.88MB 8.7s => => sha256:e756f3fdd6a378aa16205b0f75d178b7532b110e86be7659004fc6a21183226c 55.01MB / 55.01MB 45.5s => => sha256:6d5c91c4cd86dde23108ab3af91e9eae838d0059a380ee7dfd4f370b6d985523 54.58MB / 54.58MB 71.5s => => sha256:2cc8d88542628a7668ee653a4c00f2cfef5f9ea24f407227b6b63508c56eba3e 196.74MB / 196.74MB 104.6s => => sha256:2767dbfeeb87f9bd53889a475797724caee223dd3d9eb6b7e088ab6c24971b99 6.29MB / 6.29MB 51.5s => => extracting sha256:e756f3fdd6a378aa16205b0f75d178b7532b110e86be7659004fc6a21183226c 5.5s => => sha256:e5f27d860d894c7b60fd66c6523864a887d087ac83fbfdbe8de12dc253a507fa 19.73MB / 19.73MB 63.8s => => extracting sha256:bf168a6748997eb97b48cc86234b7ff7d8bc907645b9be99013158b3f146b272 0.5s => => extracting sha256:e604223835ccf02d097187b5a58ca73e8598cadbb16a36202ca1943e97f56f1f 0.7s => => sha256:98a3e4f5f5ed4372c4be3a0ad5bc18e7fa9edbea635f893819064bc573f607dc 232B / 232B 65.1s => => sha256:af265a3ad3e0ab3cb8471547a1b0ef547f1ef598107a31e7afebff3dadf69dac 2.87MB / 2.87MB 67.5s => => extracting sha256:6d5c91c4cd86dde23108ab3af91e9eae838d0059a380ee7dfd4f370b6d985523 5.6s => => extracting sha256:2cc8d88542628a7668ee653a4c00f2cfef5f9ea24f407227b6b63508c56eba3e 10.9s => => extracting sha256:2767dbfeeb87f9bd53889a475797724caee223dd3d9eb6b7e088ab6c24971b99 0.5s => => extracting sha256:e5f27d860d894c7b60fd66c6523864a887d087ac83fbfdbe8de12dc253a507fa 1.3s => => extracting sha256:98a3e4f5f5ed4372c4be3a0ad5bc18e7fa9edbea635f893819064bc573f607dc 0.0s => => extracting sha256:af265a3ad3e0ab3cb8471547a1b0ef547f1ef598107a31e7afebff3dadf69dac 0.4s => [2/2] ADD test.py / 2.2s => exporting to image 0.1s => => exporting layers 0.0s => => writing image sha256:d49294204d6a033d29e64346dbb4ae6afcb6ff6aaa9888a051090eabcbf32735 0.0s => => naming to docker.io/library/python-test:1.0 0.0s Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Enterキーを押すと、上記のメッセージが出力され、イメージの構築が完了となります。
■イメージを実行する(アプリをコンテナでホストする)
完了後、イメージを実行(アプリをコンテナでホスト)します。
>docker run python-test:1.0
コマンドプロンプト上で上記のコマンドを入力し、Enterキーを押します。
Enterキーを押すと、今回、作成したDockerfileに記載されている構成で、コンテナを稼働させ、スクリプト(test.py)を動かし、結果を出力させることができました。
コメント