dockerのコマンド
dockerのコマンドは繰り返し作業する割にはオプションが長いです。
コンテナ名など決めないとどんどん知らない名前が作られますし・・・
どこかで見たコードに Makefile
でやっているのを見て自分も見よう見真似でどんどん追加して、現在の形になりました。
実行コマンド
中身はすべて docker
のコマンドで書かれていますがパラメタをほとんど指定しなくて良いですし、違うイメージでもコマンドが統一されるのも良いですね。
特に docker run
のコマンドは長いパラメタになるので短く打てて便利です。
イメージ構築
$ make build
コンテナ起動
長いパラメタを入力しなくて便利。
$ make start
コンテナ再起動
現在残っているコンテナを強制削除して新しく起動します。
コンテナを構築しているときは build
と restart
の繰り返しになります。
$ make restart
不要イメージ、コンテナ削除
不要なイメージ、コンテナを削除、コンテナは -f
オプションをしていないので現在動いているコンテナがある場合は削除でエラーになります。すべてのコンテナが止まっているときがいいでしょう。
$ make clean
その他
その他に stop
logs
attach
がありますが $(NAME)
を指定している以外はほとんどそのままです。
Makefileのテンプレート
Makefile
NAME=xxx
VERSION=xxx
build:
docker build -t $(NAME):$(VERSION) .
restart: stop start
start:
docker run -itd \
-p xxx:xxx \
-v xxx:xxx \
--name $(NAME) \
$(NAME):$(VERSION) bash
contener=`docker ps -a -q`
image=`docker images | awk '/^<none>/ { print $$3 }'`
clean:
@if [ "$(image)" != "" ] ; then \
docker rmi $(image); \
fi
@if [ "$(contener)" != "" ] ; then \
docker rm $(contener); \
fi
stop:
docker rm -f $(NAME)
attach:
docker exec -it $(NAME) /bin/bash
logs:
docker logs $(NAME)
更新
- attachを本当のattachから
exec
に変更。<ctrl+p> <ctrl+q>
で抜けるのはいいけど、間違えてexit
してしまうことがあるのでこっちかなぁ