Dockerの基礎知識(後編)

AWS

S3イベントをトリガーにFargateでタスクを実行する(全体)をするため、Dockerの基礎知識(前編)ではDockerを使うための環境構築まで行った。
今回はDockerを利用するための基本機能を最低限記載する。
※理解しやすいようになるべく順番に記載する。

docker run

dockerイメージを起動するコマンド。
例)

docker run hello-world

このコマンドでは以下の処理を行っている。
1.hello-world用のDockerイメージをレジストリから取得
2.Dockerイメージからコンテナを作成
3.コンテナを起動し、 hello-worldというアプリケーションコードを実行する。
※コンテナは実行環境を指す。
※Dockerイメージは雛形のようなものコンテナ本体ではない。

docker image build

dockerイメージを作成するコマンド。

実行するアプリコードとDockerfileを用意し、コマンドを実行する事によりDockerイメージを作成できる。

例)

 docker image build -t sample/pythonpg:latest .

-t sample/pythonpg:latest は、タグ名:latest、イメージ名: sample/pythonpg でカレントディレクトリの構成でdockerイメージを作成する。

カレントディレクトリは以下のような構成を作成。
PYTHON-DOCKERフォルダの中に、Dockerfile、pythonの実行コード、シェルを配置。

#minocondaのベースイメージを指定
FROM continuumio/miniconda3

#printarg.pyを ./にコピーする
COPY printarg.py ./
COPY printarg.sh ./
# 作成したいPythonのバージョンでConda仮想環境を作成
#conda環境を切り替えてchemodelにインストールする
#dockerの仕様上、別のレイヤーでコマンドが実行されるため. /root/.bashrcを追加。
#これを追加しないとconda activate chemodelが上手く動かない

RUN . /root/.bashrc && \
    conda update -n base -c defaults conda && \
    conda create -n chemodel python==3.8 && \
    conda activate chemodel && \
    conda install -c rdkit -c conda-forge rdkit --override-channels

#pythonをコンテナが起動するときに実行する。
#コマンドは複数行書いて動かないため、シェルを呼び出す
CMD ["sh", "./printarg.sh"]

from rdkit import Chem
print("処理を実行しました")
#!/bin/bash
. /root/.bashrc
conda activate chemodel
python printarg.py

docker image ls

imageを一覧表示する。(「docker image build」で作成したイメージも確認できる。)

例)

docker container run

dockerコンテナの作成と起動を行う。
また、引数を追加することにより起動後に追加や変更動作も指定できる。

例)

docker container run --name pythonpg sample/pythonpg:latest

dockerコンテナの作成と起動を行う。
–name pythonpgは起動する際につける起動するコンテナ名を「pythonpg」と指定するという意味。
sample/pythonpg:latest はイメージ名とタグ名を指している。
以下、実行結果。

docker container run -it --name pythonpg sample/pythonpg:latest 

コンテナ起動とともに、コンテナにログインする。

docker container run pythonpg python printarg.py 

コンテナを起動し、引数の「python printarg.py」コマンドを実行する。
※今回の場合は、「printarg.sh」があるため、引数で指定した分も加えて起動時に 「python printarg.py」 が合計2回実行される事になる。

docker container rm コンテナ名

作成したコンテナを削除する。

>docker container rm pythonpg

まとめ

コンテナイメージの作成、コンテナ起動、コンテナの中のプログラムを実行する所までできた。
condaを利用していたため、色々ハマった点はあったため、その点についてはこちらのサイトでまとめる。
次回は、登録できたDokcerイメージを利用して、ECSで起動してみる。


コメント

タイトルとURLをコピーしました