docker メモ

Terminalをよく使うひとの、docker導入

## install は本家のサイトから：
https://www.docker.com/
Get Started  へ進む、最近は親切になっています

Documentaitionは：
https://docs.docker.com/

Docker ドキュメント日本語化プロジェクト
https://docs.docker.jp/

## コマンド体系は
dockerのヘルプは
docker --helpで、出るんですが、体系的に
省略記法で短く使えるが、体系的な利用が覚えやすい。
### docker Management対象 Command, Option となっている。

Management対象は代表的な物で以下がある

- image 　　： containerのスナップショット
- container　：イメージを走らせるインスタンス
- system　　：image,container,volumeを管理する物
- network　：dockerのネットワーク管理


Commandは代表的な物で以下がある、Managementによって利用出来るCommandは違う

- ls　　： lsとか、psの意味
- rm　　： 削除
- prune :　利用していない物は削除
- help　：　ヘルプ


### Commandを調べるには
```
$ docker image --help
$ docker container --help
$ docker container run --help
```

と言うように調べられる
docker management command --help とやるとオプションが調べられる
ショートカット・コマンドがよく使われているが使わない方が体系的に覚えられる。

試しに、imageを取得して、containerを可動させてみよう。
nginxを、docker hubから取得して、containerを起動してみる

```
$ docker image pull nginx # 取得
$ docker container run -it --name nginx-con -p 8080:80 nginx # 起動
```

##### docker Management対象 Command群　利用image 

- it   : インターラクティブで、TTY利用
- name：コンテナに付ける名前　コンテナ操作に使う
- p  : ポート　<ホスト側ポート>:<コンテナ側ポート>


これで起動するので、ブラウザーで
127.0.0.1:8080
で起動が確認出来る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63678/8d063225-46dd-9399-bb63-878ca8abb417.png)



別のTerminalでContainerの確認する

```
$ docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
9e2723caccae        nginx               "/docker-entrypoint.…"   2 minutes ago       Up 2 minutes        0.0.0.0:8080->80/tcp   nginx-con
```

- CONTAINER ID : ID
- IMAGE : 元のimage
- COMMAND : 起動時、実行コマンド
- CREATED　：何時作成したか
- STATUS　：ステータス
- PORTS　：ポート情報　ホストのポート: コンテナのポート
- NAMES　：コンテナの名前

containerを停止する

```
$ docker container stop nginx-con
nginx-con

$ docker container ls -a         
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
9e2723caccae        nginx               "/docker-entrypoint.…"   23 minutes ago      Exited (0) 18 seconds ago                       nginx-con

```

ここで、docker の状況を見てみよう

```
$ docker system df # ディスク利用状況を見る
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              2                   1                   335.8MB             203.3MB (60%)
Containers          1                   0                   1.114kB             1.114kB (100%)
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B

$ docker image ls # 現在の収録イメージ
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              0901fa9da894        6 days ago          132MB
centos              7                   b5b4d78bc90c        2 months ago        203MB

~ >% docker container ls -a # コンテナの状況を見る
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
9e2723caccae        nginx               "/docker-entrypoint.…"   35 minutes ago      Exited (0) 11 minutes ago                       nginx-con

＄ docker container prune # 利用していないコンテナを削除
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
9e2723caccae923f45ace783093c474be29e518b802549d36ef5ca946e2336df

Total reclaimed space: 1.114kB

$ docker system df      
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              2                   0                   335.8MB             335.8MB (100%)
Containers          0                   0                   0B                  0B
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B
~ >% 

```

1. docker system df  ディスクの利用状態を見る
    - imageが2つあって、1つのimageが使われている
    - containerが、Activeでないのに何故と思う
2. docker image ls 　現在の収録イメージを見る
3. docker container ls -a # コンテナの状況を見る
    - ls -a として、稼働していない、containerも表示させる
    - Exitedのcontainerがあることに気付く
4. docker container prune # 利用していないコンテナを削除
    - STATUSが Exitedになっているのが分かるこれを消す為に
    - docker container rm コンテナ名で削除しても良いのだが　pruneコマンドで消している
    - pruneは、利用していないコンテナをまとめて削除してくれる。確認を求められる
5. docker system df  ディスクの利用状態を見る