Docker imageの表示・削除・全削除 containerの表示・削除・全削除 コマンド一覧

# ローカルにDL済みのimageを一覧表示
```docker images```

```
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        3 months ago        13.3kB
docker/whalesay     latest              6b362a9f73eb        4 years ago         247MB
```
上記はこんなイメージ↓

|REPOSITORY|TAG|IMAGE ID|CREATED|SIZE|
| ---- | ---- | ---- | ---- | ---- |
|hello-world|latest|bf756fb1ae65|3 months ago|13.3kB
docker/whalesay|latest|6b362a9f73eb|4 years ago|247MB

REPOSITORY ...どのレポジトリからDLされたか。dockerhubで調べるとよい。
TAG        ...レポジトリのどのタグをDLしたか。versionとか。新しく作成するときに任意に変えられる。
IMAGE ID   ...イメージを識別するためのID
CREATED    ...作成日時
SIZE       ...サイズ

#新しく作るimageにタグ名を設定したい！
```docker tag 元となるイメージ名 新しいイメージ名:新しいタグ名```

```
$ docker tag hello-world new_hello:new

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        3 months ago        13.3kB
new_hello           new                 bf756fb1ae65        3 months ago        13.3kB
docker/whalesay     latest              6b362a9f73eb        4 years ago         247MB

```
new_helloを作ってもIMAGE IDが変わらないことに注目

# そのimageの詳細情報を知りたい！
```docker inspect image名```
JSONみたいにキーバリュー型のリストで表示される

```
$ docker inspect new_hello:new
[
    {
        "Id": "sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b",
        "RepoTags": [
            "hello-world:latest",
            "new:latest",
            "new_hello:new"
        ],
        "RepoDigests": [
            "hello-world@sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-01-03T01:21:37.263809283Z",
        "Container": "71237a2659e6419aee44fc0b51ffbd12859d1a50ba202e02c2586ed999def583",
        "ContainerConfig": {
...            
(以下略)
```

# imageを消したい！
```docker rmi image名```
image名はIDでも消せる
タグ名を付かなければlatestが削除される

```docker rmi -f image名```
強制削除

```docker rmi image名 image名 image名 ...```
たくさん消せる

```docker rmi $(docker images -aq)```
ちなみに全消去

```docker images -aq```
$()の中身はIDの一覧表示

```
$ docker images -aq
bf756fb1ae65
bf756fb1ae65
bf756fb1ae65
6b362a9f73eb
6b362a9f73eb
6b362a9f73eb
```
だから全部消せる訳ですね。なるほど。

# imageを取得する
```docker pull image名```
タグを指定しなければlatestがダウンロードされる。
latestは最新版というわけでなく、タグがないというだけ。

補足。
1. imageの取得...docker pull
2. containerの作成...docker create
3. containerの起動...docker start
丸ごとひっくるめてdocker runとなっている

# containerの一覧表示
```docker ps -a```

```
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMES
ebc4117dad44        docker/whalesay     "cowsay Hello!"          57 minutes ago      Exited (0) 57 minutes ago                          zen_buck
3c6b87fa66ac        hello-world         "/hello"                 15 hours ago        Exited (0) 15 hours ago                            upbeat_nobel
```

# containerの削除
```docker rm container名```
container IDでも大丈夫

複数削除
```docker rm container名 container名 container名...```
container名（もしくはcontainer ID）を並べるだけ

一括削除
```docker rm $(docker ps -aq)```
$(docker ps -aq)はcontainer IDの一括表示。
そのため一気に消せる。