Edited at

docker-composeとdockerコマンドまとめ

More than 1 year has passed since last update.


前提条件


  • 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