Dockerコマンド(確認編)

Dockerの状態には変更を加えず、ただ確認するだけのコマンドを記述しています。

# Dockerそのものに関しての確認コマンド

## Dockerのバージョン確認
```
$ docker version
```
注意：`--version`ではなく、`version`

## Dockerの実行環境確認
```
$ docker system info
Containers: 0        //コンテナの数
 Running: 0
 Paused: 0
 Stopped: 0
Images: 6
Server Version: 18.06.1-ce     //Dockerのバージョン
Storage Driver: overlay2       //ストレージドライバの種類
.
.
.
```

## Dockerのディスク利用状況
```
$ Docker system df
TYPE                TOTAL     ACTIVE       SIZE           RECLAIMABLE
Images              4         0            478.7MB        478.7MB (100%)
Containers          0         0            0B             0B
Local Volumes       0         0            0B             0B
Build Cache         0         0            0B             0B
```


# Dockerイメージに関する確認コマンド

## イメージの一覧表示
```
$ docker image ls
REPOSITORY      TAG             IMAGE ID        CREATED         SIZE
webap           latest          c3d22c1264c0    2 weeks ago     169MB
ubuntu          latest          ea4c82dcd15a    4 weeks ago     85.8MB
nginx           latest          dbfc48660aeb    4 weeks ago     109MB
centos          centos7         75835a67d134    5 weeks ago     200MB
```
`-a`オプションを指定すると、中間イメージも全て表示される。

## イメージの詳細表示
`image_name`というイメージの詳細を確認したい時

```
$ docker image inspect image_name
```
長いので省略しますが、大体次のことが確認できます。

* イメージID
* 制作日
* Dockernoバージョン
* CPUのアーキテクチャ


# Dockerコンテナに関する確認コマンド

## 稼働コンテナの一覧表示
```
$ docker container ls
CONTAINER ID  IMAGE  COMMAND                  CREATED        STATUS        PORTS                  NAMES
997488f0976d  nginx  "nginx -g 'daemon of…"   8 seconds ago  Up 7 seconds  0.0.0.0:8080->80/tcp   hungry_hodgkin
```
`-a`オプションで起動中/停止中も含めた全てのコンテナを表示する。

## コンテナの稼働確認

| 項目                | 説明                              |
|:------------------:|:---------------------------------:|
| CONTAINER ID       | コンテナ識別子                       |
| NAME               | コンテナ名                           |
| CPU %              | CPU使用率                          |
| MEM USAGE / LIMIT  | メモリ使用量/コンテナで使用できるメモリ制限 |
| MEM %              | メモリ使用率                         |
| NET I/O            | ネットワークI/O                       |
| BLOCK I/O          | ブロックI/O                          |
| PIDS               | PID                               |
コンテナIDが`997488f0976d`のコンテナの稼働状態を確認する。

```
$ docker container stats 9974
CONTAINER ID        NAME                CPU %     MEM USAGE / LIMIT     MEM %       NET I/O      BLOCK I/O    PIDS
997488f0976d        hungry_hodgkin      0.00%     1.867MiB / 1.952GiB   0.09%       928B / 0B    0B / 0B      2
```

## 稼働コンテナのプロセス確認
コンテナIDが`997488f0976d`のプロセスを確認する。

```
$ docker container top 9974
PID      USER     TIME      COMMAND
2808     root     0:00      nginx: master process nginx -g daemon off;
2852     101      0:00      nginx: worker process
```

# Dockerコンテナのネットワークに関する確認コマンド
Dockerコンテナ同士が通信を行うときは、Dockerネットワークを利用する。  
Dockerネットワークを管理するときの操作。

## ネットワークの一覧表示
Dockerはデフォルトで`bridge`,`host`,`none`の3つのネットワークを作成する。

```
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5ae08cb7f0b9        bridge              bridge              local
dbdcb146a96b        host                host                local
6733fa76ac58        none                null                local
```
## ネットワークの詳細確認
`web-network`という名前のネットワークの詳細を表示する。

```
$ docker network inspect web-network
[
    {
        "Name": "web-network",
        "Id": "1037921066a62ab0be4ef7ea181dd5d14c79aaa23fdb1978d381cde02da1ccc7",
        "Created": "2018-11-17T02:54:07.6851206Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
```


## 稼働しているコンテナのポート転送を確認
`webserver`という稼働コンテナのポート転送を確認する。
コンテナで起動したwebサーバーがPC上で閲覧できない時などに使う。

```bash
$ docker container port webserver
3000/tcp -> 0.0.0.0:3000
```