Dockerでpython3.6のアプリケーションを作って全て削除するまでの流れ

カテゴリ: Docker

Dockerでalpineのpython3.6コンテナを利用して、pythonのスクリプトを実行し、作成したコンテナ/イメージを全て削除するための手順です。

dockerで動くアプリケーションの準備

まずは、Dockerfileへ定義を書く

  • Dockerfile
FROM python:3.6-alpine

COPY ./app /app
WORKDIR /app

CMD python /app/hello.py

次に動作確認用のpythonアプリケーションを作る

  • app/hello.py
print("hello python")

作ったファイルはこの2つだけです

$ find . -type f
./app/hello.py
./Dockerfile

イメージをビルド

Dockerfileからイメージを作る

$ docker build ./ -t test/python-app
...
Successfully tagged test/python-app:latest

作成されたイメージを確認

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test/python-app     latest              582854a1661f        51 seconds ago      79MB
python              3.6-alpine          83d065b0546b        30 hours ago        79MB

コンテナに入って実行してみる

shでコンテナにログインして、作成したpythonのコマンドを実行する

$ docker run --name PyTest1 -it test/python-app /bin/sh

[container]/app # python /app/hello.py
hello python

[container]/app # exit

コンテナからexitした後にホストOSでプロセスを確認すると終了している

$ docker ps -a
CONTAINER ID  IMAGE               COMMAND    CREATED         STATUS                     PORTS   NAMES
ee115a2e5597  test/python-app     "/bin/sh"  17 seconds ago  Exited (0) 6 seconds ago           PyTest1

作成されたコンテナを削除する

$ docker rm PyTest1
PyTest1

$ docker ps -a
CONTAINER ID  IMAGE               COMMAND    CREATED         STATUS                     PORTS   NAMES

コンテナに入らず実行する 

実行すると、DockerfileのCMDに書いたコマンドが実行される

$ docker run --name PyTest1 test/python-app 
hello python

コンテナの一覧をみると終了している

$ docker ps -a
CONTAINER ID  IMAGE            COMMAND                  CREATED       STATUS                   PORTS  NAMES
2fc1b38aca3f  test/python-app  "/bin/sh -c 'python …"   9 seconds ago Exited (0) 7 seconds ago        PyTest1

コンテナを削除

$ docker rm PyTest1

実行が完了したらすぐにコンテナを削除する

dockerコマンドを--rmオプション付きで実行する

$ docker run --rm test/python-app 
hello python

コンテナの一覧をみると削除されているのでrmしなくて良い

$ docker ps -a
CONTAINER ID  IMAGE               COMMAND    CREATED         STATUS                     PORTS   NAMES

作ったイメージを削除する

作成したテストのdockerイメージを削除

$ docker rmi  test/python-app 

Untagged: test/python-app:latest
Deleted: sha256:582854a1661f7917f43e2f51...
Deleted: sha256:6e394e814211dba9d83de43a...
Deleted: sha256:b9401ed4dc0f198b7d787d6e...
Deleted: sha256:7d67e4fbf5fe32a6972b1dfe...

再度イメージ一覧をみると、ベースに使ったalpineのpython3.6イメージだけが残っている。これも邪魔なら消してしまっても良い(削除すると次にdocker buildするときに再度ダウンロードされる)

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              3.6-alpine          83d065b0546b        30 hours ago        79MB

コンテナの作成、実行、削除を一気に行うスクリプトを作る

下記のコマンドで、dockerコンテナを作成して、実行、作ったイメージの削除まで行える。今回のサンプルでコンテナの作成でなんの依存パッケージも使っていないので、下記のコマンドが2秒程度で実行できてしまう。

docker build ./ -t test/python-app
docker run --rm test/python-app
docker rmi test/python-app

# 削除できていることの確認
# docker images
# docker ps -a
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。