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
こちらもおススメ