Dockerについての忘却録

##ターミナル内でのDockerコマンドの操作
今回は実際に学んでターミナル内で動かしたDockerコマンドについて説明していきたいと思います。

###Dockerについての情報の確認

```
# docker info
```

Dockerについての情報を見ることができます。

###ローカル環境のDockerイメージの一覧の確認

```
# docker images
REPOSITORY                TAG       IMAGE ID       CREATED         SIZE
wordpress                 latest      　　　　　　2 weeks ago     616MB
nginx                     latest      　　　　　　3 weeks ago     133MB
docker_memo_laravel_php   latest      　　　　　　5 weeks ago     1.15GB
docker_memo_php           latest     　　　　　　 5 weeks ago     1.03GB
mysql                     5.7         　　　　　　5 weeks ago     448MB
docker/getting-started    latest      　　　　　　5 months ago    28MB
nginx                     1.19.1     　　　　　　 15 months ago   132MB
phpmyadmin/phpmyadmin     5.0.0       　　　　　　22 months ago   469MB
```

ローカル環境のDockerイメージの一覧を確認できます
※IMAGE IDは省略してます


###ローカル環境のDockerコンテナの一覧を確認

```
# docker ps -a
```

ローカル環境のDockerコンテナ(Dockerイメージをもとに起動させたコンテナのこと)
の一覧を確認できます。
※実行結果は省略しています

###Dockerイメージを使用してDockerコンテナを起動

```
# docker run hello-world
Unable to find image 'hello-world:latest' locally①
latest: Pulling from library/hello-world②
2db29710123e: Pull complete 
Digest: sha256:37a0b92b08d4919615c3ee023f7ddb068d12b8387475d64c622ac30f45c29c51
Status: Downloaded newer image for hello-world:latest

Hello from Docker!③
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

```

Dockerイメージを使用してDockerコンテナを起動するコマンドです

ローカル環境にはDockerイメージがない→①
そのためDocker Hubで探しに行き、存在すればDockerイメージをダウンロードします→②

hello-worldイメージのダウンロードが完了したら、そのイメージを使用してコンテナを起動させています。
そして今回例に出したhello-worldイメージは、コンテナ起動をしたら、コンテナの中で③以降のメッセージを出力するようなDockerイメージとなっています。

これらの処理についてが

```
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
```

に記載されています。

```
# docker images
hello-world               latest    feb5d9fea6a5   6 weeks ago     13.3kB
```

このように示されているのが確認できました。

実は先ほどの

```
# docker run hello-world
```

こちらのコマンドは
①Dockerイメージのダウンロード
②コンテナの起動

という２つの処理をを実行しました。

①Dockerイメージのダウンロード　のみを行いたい場合は

```
# docker pull?hello-world
```

を使用します。

コンテナの状態を確認

```
# docker ps -a
CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS                      PORTS                                                    NAMES
eb09716b68a5   hello-world                   "/hello"                 16 minutes ago   Exited (0) 16 minutes ago                                                            elastic_vaughan
```

のようになっています

表示内容としては、

CONTAINER ID:コンテナのID、
IMAGE:使用したDockerイメージ、
COMMAND:コンテナ起動時にコンテナ内で実行するコマンド、
CREATED:コンテナを作成したタイミング、
STATUS:コンテナ状態（起動中、停止中など）、
PORTS:ポートフォワード(ポートにやってきたデータを別のところに転送する)設定
NAMES:コンテナの名前、

となっています。

### Dockerコンテナ、イメージの削除
まずはコンテナの削除についてです

```
# docker rm <コンテナ名> 
または
# docker rm <CONTAINER ID>
```

となります。

hello-worldを例にすると

```
# docker rm elastic_vaughan
または
# docker rm eb09716b68a5
```
となります。次にイメージの削除についてです。


```
# docker rmi <Dockerイメージ名> 
または
# docker rmi <IMAGE ID> 
```

で削除します。

今回のを例にすると

```
# docker rmi hello-world  
または
# docker rmi feb5d9fea6a5
```

となります。

コマンドの間には半角スペースが必要なので注意しましょう。