dockerfile 書いたら負けってのは解る。
でも、dockerfile を書かないと、dockerのボリュームの切り分けタイミングや、entrypoint が理解できないし。
dockerfile を書いたことがないと docker hub から pull してきても使い方がわからない。
dockerfile を書いて実行するのが面倒くさい。
練習がてらに、dockerfileをたくさん書いたけど、コマンドが長くなってしまうので不便だよね。 dockerfile のサンプルをgithub で見ても殆どの人が、Rakefile や makefile を置いているので、やっぱりそうなんだと思った。
Makefile書いた
### dockerfile 単体時の設定 name = takuya-debian .PHONY: all build run all: build build.log: ./Dockerfile @docker build -t $(name) . date +"%Y-%m-%d %H:%i:%s "> ./build.log build: build.log run: @docker run -it -d $(name) ## makefile 中での $() は $$() にする login: @docker exec -it $$( docker ps -q --filter 'ancestor=$(name)' -f 'status=running' ) bash kill: @docker kill $$( docker ps -q --filter 'ancestor=$(name)' -f 'status=running' )
makefile やコマンドを実行するときのポイント
- 作成中の docker image にはかならず名前をつける
- 名前を指定して実行する
- 名前を使って終了する
docker ps の filter オプションを使う。
ubuntu のイメージを全て表示する
docker ps -a --filter 'ancestor=ubuntu'
ubuntu のイメージで実行中のもの
docker ps -a --filter 'ancestor=ubuntu' --filter 'status=running'
これらの他にもフィルタが在るのだけど。 docker ps
をフィルタで使うことでとても楽に管理ができるようになった。
参考資料
https://docs.docker.com/engine/reference/commandline/ps/#filtering