Windows10でDocker For Windowsを使用してCentOS環境を構築してみた（インストール～コンテナ作成、削除まで）

# はじめに
### 本記事で書くこと
* 筆者がWindows10のデスクトップPCにCentOS環境を構築した際の手順
### 本記事で書かないこと
* CentOSの細かい説明

# そもそもWindowsにCentOS環境を構築する方法って何がある？
__１．Windows上に仮想マシンソフトをインストールして、その仮想マシン上にCentOSをインストールする__
__２．WSL（Windows Subsystem for Linux）2を使用してCentOSをインストールする__
__３．Docker For WindowsをインストールしてCentOS環境を構築する__

# 今回はこちらを採用
__３．Docker For WindowsをインストールしてCentOS環境を構築する__

# 環境構築スタート

## Hyper-Vの有効化
１．Windowsの検索バーで「Windowsの機能」と検索すると「Windowsの機能の有効化または無効化」が出てくるのでそちらをクリック
２．以下のボックスが表示されるので、Hyper-Vにチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/3a906c6e-8a78-04c5-4be3-dc632e1189c3.png)
３．Windowsを再起動

## Docker ID を取得
[こちら（https://hub.docker.com/signup）](https://hub.docker.com/signup)の公式サイトからサインアップしてアカウントを作成することでDockerIDを取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/0b05bf2f-451b-b80b-ce0f-0be999d21091.png)

## Docker Desktop for Windows のインストール
１．[こちら（https://www.docker.com/products/docker-desktop）](https://www.docker.com/products/docker-desktop)の公式サイトからインストーラをダウンロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/e7f430c2-0d2b-3a6c-eebe-f6783df3a41e.png)

２．ダウンロードしたインストーラを実行します。
実行して、数秒で設定画面が表示されます。
今回はWSL2も使用してDockerを実行しますので1つ目のチェックはONにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/b7f9ef2d-6610-30c8-1c94-3aee69ceac27.png)

３．OKでインストールが開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/6d1968d1-a521-818c-7445-f6122beb198c.png)

４．インストールが完了
再起動を促されるので再起動します。

## Docker DeskTopを起動
１．起動後にサブスクリプション同意のポップアップが表示されます。（今回は個人利用で無料なのでAcceptを選択しました）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/b080ba4f-d557-71eb-fb1d-c2e76aa59f2f.png)

起動するとこちらのエラーメッセージが。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/847eb36c-fc34-0d0c-aa82-66cb67646088.png)

どうやらWSLの更新プログラムを反映する必要があるようです。
MicroSoftの公式サイトから[こちらの更新プログラム](https://docs.microsoft.com/ja-jp/windows/wsl/install-manual#step-4%E2%80%94download-the-linux-kernel-update-package:~:text=%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B-,%E6%9C%80%E6%96%B0%E3%81%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%BE%E3%81%99%E3%80%82,-x64%20%E3%83%9E%E3%82%B7%E3%83%B3%E7%94%A8)をインストールします。

ダウンロードしたファイルを実行するとインストールが開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/69d2d84d-4517-9798-5015-07f7086ee5e2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/db32d37d-2ae1-f7e6-83a7-6fb4c2363098.png)

２．PCを再起動することでDocker DeskTopが正常に起動しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/0f7ab49f-d430-a9a7-09bf-d691d0ad6423.png)

## CentOS環境の構築
__以下のコマンドはWindows PowerShellで実行しています。__
### CentOSイメージの取得
:::note info
Dockerイメージとは、コンテナを作成するための動作環境テンプレートです。
:::

```
> docker pull centos:centos8
[結果]
centos8: Pulling from library/centos
xxxxxxxxxxx: Pull complete
Digest: sxxxx:xx7fdxxxxx7143cbxxxxxx1c40xxd534bbxxxxxxx7xxxxb1xx
Status: Downloaded newer image for centos:centos8
docker.io/library/centos:centos8
```

### イメージ情報の表示
```
> docker images
[結果]
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       centos8   xxxxxxxxxxxx   12 months ago   231MB
```
※Docker DeskTopの場合は一覧画面にて確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/688fbb84-052a-3a88-0db8-5791db49143d.png)


### コンテナの作成
:::note info
Dockerコンテナとは、Dockerイメージを用いて作成した仮想化環境です。
:::
```
> docker run -it --name="testos01" centos:centos8 /bin/bash
[結果] ※コンテナが作成されログインした状態になります。
[root@xxxxxxxxxxx /]#

※一旦exitコマンドでログアウトして、コンテナを停止します。
exit
>
```


※Docker Desktopの場合はImagesの一覧ページからRunを選択でコンテナを作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/105783c3-fa90-5e08-f2c2-f0c8ec9b06eb.png)


PSコマンドでコンテナリストに「testos01」が追加されていることを確認できます。
```
> docker ps -a
[結果] -a オプションを付けた場合は停止中のコンテナも表示されます。
CONTAINER ID   IMAGE            COMMAND       CREATED              STATUS                          PORTS     NAMES
xxxxxxxxxxxx   centos:centos8   "/bin/bash"   About a minute ago   Exited (0) About a minute ago             testos01
```

※Docker Desktopの場合は一覧画面にて確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035894/4bca3060-8d4b-25b4-bad8-064c3950e837.png)

※Docker Desktopの場合は、以降の再起動/停止/削除についても一覧画面のACTIONボタンにて操作可能です。


### コンテナの再起動

先ほど停止したコンテナを再度起動します
```
docker start testos01
[結果]
testos01
```

psコマンドで起動を確認します
```
> docker ps
[結果]
CONTAINER ID   IMAGE            COMMAND       CREATED          STATUS         PORTS     NAMES
xxxxxxxxxxxx   centos:centos8   "/bin/bash"   10 minutes ago   Up 5 minutes             testos01
```

無事コンテナが起動できました。

### コンテナの停止
```
> docker stop testos01
[結果]
testos01
```

psコマンドで停止されていることを確認します。
```
> docker ps -a
[結果] -a オプションを付けた場合は停止中のコンテナも表示されます。
CONTAINER ID   IMAGE            COMMAND       CREATED          STATUS                      PORTS     NAMES
xxxxxxxxxxxx   centos:centos8   "/bin/bash"   16 minutes ago   Exited (0) 40 seconds ago             testos01
```

### コンテナの削除
```
> docker rm testos01
[結果]
testos01
```

psコマンドで削除されたことを確認します。
```
> docker ps -a
[結果]
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
```

### イメージを削除

削除前にイメージを確認
```
> docker images
[結果]
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       centos8   xxxxxxxxxxxx   12 months ago   231MB
```

削除を実行
```
> docker rmi centos:centos8
[結果]
Untagged: centos:centos8
Untagged: centos@xxxxxx:xx7fd8080b517143cbbbabxxxxxxxxxxxxxxbdee55bd6c473f432b177
Deleted: xxxxxx:5d0da3dc976460b72c7xxxxxxxxxxxxx20b0416bfc16c52c4xxxxxxxxxxfadb6
Deleted: xxxxxx:74ddxxxxxxxxxxxxxba91a0a3053b02xxxxxxxxxxxxxxx89f85xxxx360xx6b59
```

imsgesコマンドで削除されたことを確認します
```
> docker images
[結果]
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
```


以上

次回は、コンテナ上での操作について投稿予定です。