# Docker初心者による、初心者のためのDocker入門 #5 よく使うコマンド編

この記事で使っているdockerは以下の通りです。
```
Docker version 1.12.1, build 6f9534c
```


ここまでチュートリアル的なものを4編やってきました。


> Docker初心者による、初心者のためのDocker入門 #1
http://qiita.com/furu8ma/items/e8249ddd48fab42eb7a3

> Docker初心者による、初心者のためのDocker入門 #2
DockerfileでApache+PHPの環境を構築する
http://qiita.com/furu8ma/items/5d0c35c29e53429e4f10

> Docker初心者による、初心者のためのDocker入門 #3
DockerでapacheとMemcachedを起動してPHP7から接続してみる
http://qiita.com/furu8ma/items/10be650bc38b170b8cc6

> Docker初心者による、初心者のためのDocker入門 #4
DockerでapacheとMemcachedを起動してPHP5.4から接続してみる
http://qiita.com/furu8ma/items/10be650bc38b170b8cc6


手元のPC上でDockerを使う分にはだいぶ困らなくなってきたのでは、と思います。
ここらでユーケース別に使用するDockerコマンドをまとめてみます。


## docker imageをpullしすぎて容量が足りない

2G超とかどてかいイメージもあるのでガンガンpullしてるとわりとすぐ発生しますね。

そんな時はまず手元にあるimageを確認

```sh
$ docker images
REPOSITORY                                                 TAG                 IMAGE ID            CREATED             SIZE
wordpress                                                  latest              88e010fa60ea        43 hours ago        419.4 MB
redis                                                      latest              d017c068a149        44 hours ago        182.9 MB
mysql                                                      latest              18f13d72f7f0        47 hours ago        383.4 MB
sameersbn/gitlab                                           latest              5b2ae4a2a4a4        3 days ago          758.7 MB
nginx                                                      latest              4efb2fcdb1ab        4 weeks ago         183.4 MB
memcached                                                  1.4                 bb1778ef7d3a        4 weeks ago         128.2 MB
centos                                                     6                   a3c09d36ab4a        8 weeks ago         194.6 MB
centos                                                     6.8                 a374fd62f97f        12 weeks ago        194.5 MB
```

こんな感じで手元にあるimageが全て表示されます。この中で例えばngixを消したい場合には

```sh
$ docker rmi 4efb2fcdb1ab   #nginxのIMAGEID

Untagged: nginx:latest
Untagged: nginx@sha256:d33834dd25d330da75dccd8add3ae2c9d7bb97f502b421b02cecb6cb7b34a1b6
Deleted: sha256:4efb2fcdb1ab05fb03c9435234343c1cc65289eeb016be86193e88d3a5d84f6b
Deleted: sha256:cecce1fbb03126a5fdc7a04401af744f060da808d33efb6872f689b3b4792b9e
Deleted: sha256:d53955d1e5caf011fc6b877266af9db6c575517c791dd1cd59ee1cf00e06086a
```

このイメージに依存しいてるイメージがなければさくっと消えます。
ちなみに、IMAGEIDはフルで指定する必要はなく、先頭の3文字くらいでもOKです。この場合4efでもOK。
ようは手元にあるimageの中で一意に識別できる部分だけで良いということです。楽ですね〜。


## 今走っているdockerコンテナを確認したい

コンテナは勝手にお亡くなりになることもよくあるので、今存命中のコンテナを確認したいこともよくあります。
そんなときは

```sh
$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                NAMES
a81565c00340        wordpress                "/entrypoint.sh apach"   46 seconds ago      Up 6 seconds        0.0.0.0:80->80/tcp   tmp_wordpress_1
a64041f63295        mysql                    "docker-entrypoint.sh"   47 seconds ago      Up 7 seconds        3306/tcp             tmp_mysql_1
9b06bdf8dc6a        sameersbn/mysql:latest   "/sbin/entrypoint.sh "   47 minutes ago      Up 45 minutes       3306/tcp             tmp_gitlab-mysql_1
4c31d20f9190        sameersbn/redis:latest   "/sbin/entrypoint.sh"    47 minutes ago      Up 45 minutes       6379/tcp             tmp_gitlab-redis_1
```

走っているコンテナがたくさん見えます。


## 今走っているdockerコンテナを停止したい

そんな時は``docker ps``でCONTAINER IDを確認したあと

```sh
$ docker  kill 4c31d20f9190 # killしたいCONTAINER ID
```

で停止します。


## 既に停止したコンテナも含めて全て確認したい

停止したコンテナ群も含めて全て確認できます。

```sh
$ docker ps -a
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                            PORTS                NAMES
a81565c00340        wordpress                 "/entrypoint.sh apach"   5 minutes ago       Up 4 minutes                      0.0.0.0:80->80/tcp   tmp_wordpress_1
a64041f63295        mysql                     "docker-entrypoint.sh"   5 minutes ago       Up 4 minutes                      3306/tcp             tmp_mysql_1
2734d0bd3dd3        sameersbn/gitlab:latest   "/sbin/entrypoint.sh "   52 minutes ago      Exited (1) 49 minutes ago                              tmp_gitlab_1
9b06bdf8dc6a        sameersbn/mysql:latest    "/sbin/entrypoint.sh "   52 minutes ago      Up 50 minutes                     3306/tcp             tmp_gitlab-mysql_1
4c31d20f9190        sameersbn/redis:latest    "/sbin/entrypoint.sh"    52 minutes ago      Exited (137) About a minute ago                        tmp_gitlab-redis_1
```

STATUSにexitedと出ているのが停止したコンテナです。
この停止したコンテナが残っていると、コンテナが使用しているdocker imageが削除できなくなるので削除します。


## 既に停止したコンテナを削除したい

```sh
$ docker rm  4c31d20f9190  # CONTAINER ID
```

## コンテナにログインしたい

なんでこのコンテナはちゃんとうごいてくれないんだーとか、中を覗きたいことは結構あります。
そんな時はこれ。

```sh
$ docker exec -it a81565c00340 /bin/bash
```

-itの後に指定しているのは``docker ps``でわかるCONTAINER IDです。


-------

日常的なコンテナの起動にはComposeを使うので、停止、削除関連にdockerコマンドが大活躍です。
参考になれば。