前提条件
- MacOS Sierra 10.12.6
- homebrew
- iTerm2
- Docker for Mac 17.06.0
せっかくdockerを使ったので、よく使うコマンドをまとめておきます
(MacをSierraにver upしましたが、この辺には全く影響がなかったです)
コマンド
サービスの構築または再構築
$ docker-compose build
コンテナの作成と開始
$ docker-compose up
サービスの停止
$ docker-compose stop
コンテナの停止
$ docker-compose down
コンテナ一覧(docker)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb8bf3e2a7fa docker_nginx "nginx -g 'daemon ..." 3 days ago Up 20 seconds 443/tcp, 0.0.0.0:8080->80/tcp nginx
043404e9fe75 docker_php "docker-php-entryp..." 3 days ago Up 21 seconds 9000/tcp, 0.0.0.0:9001->9001/tcp php
472f8a3774a4 docker_mysql "docker-entrypoint..." 4 days ago Up 21 seconds 0.0.0.0:3306->3306/tcp mysql
コンテナ一覧(docker-compose)
$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
nginx nginx -g daemon off; Up 443/tcp, 0.0.0.0:8080->80/tcp
php docker-php-entrypoint php-fpm Up 9000/tcp, 0.0.0.0:9001->9001/tcp
docker-composeとdockerで出力内容がちょっと違いますね・・・
指定したコンテナに入る
$ docker exec -it 043404e9fe75 bash
root@043404e9fe75:/var/www/html#
043404e9fe75の部分はdocker psで調べたCONTAINER IDが入ります
(なぜdocker-compose psでCONTAINER IDが出ないんだろうか・・・?)
イメージ一覧(docker)
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_nginx latest 713e73265b01 3 days ago 183MB
<none> <none> 457f03c3a8a5 3 days ago 183MB
<none> <none> 8c55eb4ab305 3 days ago 183MB
<none> <none> 78d89e63b832 3 days ago 183MB
<none> <none> e4134c2d8f9f 3 days ago 183MB
<none> <none> e4f8e7437c52 4 days ago 183MB
<none> <none> 30342c23b22c 4 days ago 183MB
docker_php latest edb84cd10961 4 days ago 430MB
<none> <none> 4da40db9cde2 3 months ago 183MB
php 7.1-fpm 52e982dc973b 3 months ago 382MB
mysql 5.6 ed7b6c642b9d 3 months ago 299MB
docker_mysql latest ed7b6c642b9d 3 months ago 299MB
nginx 1.11 5766334bdaa0 4 months ago 183MB
イメージ一覧(docker-compose)
$ docker-compose images
Container Repository Tag Image Id Size
---------------------------------------------------------
mysql docker_mysql latest ed7b6c642b9d 285 MB
nginx docker_nginx latest 713e73265b01 174 MB
php docker_php latest edb84cd10961 410 MB
ログをみる
$ docker-compose logs
サービスの再起動
$ docker-compose restart
Restarting nginx ... done
Restarting php ... done
Restarting mysql ... done
作成途中によく使ったコマンド
docker-compose.ymlを変更してbuild,upしても、なんだかよくわからないけど、うまくいかない。
書き換えたのになんだかちゃんと反映されてない気がする・・・あーもう、まっさらにしてやり直したい!という時に使うコマンド。
まっさらにしたら動いたよってことがあるので、試してみるとよいかもです。(ちゃんと原因を追求すべき時もありますが・・・)
コンテナをまとめて削除
$ docker ps -a | awk 'NR>1 {print $1}' | xargs docker rm
5ee1b3b893db
48d49f8cde1b
・・・
Error response from daemon: You cannot remove a running container 472f8a3774a4e62b5a64bea3f11ad756c768323c5bdd833e695390d4374a341f. Stop the container before attempting removal or force remove
削除できない時、強制的に削除するなら-fをつけます
(↑のエラーは、ちゃんと停止しないで、いきなりコンテナ削除しようとしたので怒られています。停止のコマンドがあるので使いましょうw)
$ docker ps -a | awk 'NR>1 {print $1}' | xargs docker rm -f
imageをまとめて削除
$ docker images | awk 'NR>1 {print $3}' | xargs docker rmi
Untagged: docker_nginx:latest
Deleted: sha256:713e73265b013ff8964299d40c603b63a715a5040cd8ffa6cd386c6d03707d2f
・・・
Error response from daemon: conflict: unable to delete ed7b6c642b9d (must be forced) - image is referenced in multiple repositories
こちらも強制削除するなら-fをつけます
$ docker images | awk 'NR>1 {print $3}' | xargs docker rmi -f
ちなみに作成途中でよく困ったのが、コンテナの中に入ったら、vi入れてないのにviでファイルを見ようとして怒られる・・・という割としょうもないミスです。(わかっているのに、つい・・・)
参考資料
docker-compose コマンド概要
http://docs.docker.jp/compose/reference/overview.html