Hyper-V上でDockerコンテナ(CentOS)を立ち上げる

# 概要

Wimdows10のHyper-Vの機能を利用してDocker環境を作成します。またDockerを利用してCentOSのDockerコンテナを作成します。

## 0. 前提条件

- Windows10 Proであること
- メモリが4GB以上あること
- Hyper-Vを有効化していること

## 1. Dockerのインストール

1. https://hub.docker.com/editions/community/docker-ce-desktop-windows に移動する。

1. Docker Hub(Docker向けのコンテナ共有サービス)にログインする。
![WS043.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/3295d428-1d5b-14ac-5807-858a2c72d978.jpeg)

1. 「Get Docker」をクリックしてダウンロードする。
![WS000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/2247b0d4-edbd-c0de-8466-4fcee94c4913.jpeg)

1. ダウンロードした「Docker for Windows Installer」を起動する。
![WS001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/54184edd-2c93-bc7f-253d-eea2913bb17a.jpeg)

1. 「OK」をクリックする。
![WS002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/59b1b5db-f2f0-d4cd-ed43-8064ea907369.jpeg)

1. インストールが開始されるので待機する。
![WS003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/62449215-4016-65ab-3baf-b7d3938c933f.jpeg)

1. 「Installation succeeded」と表示されることを確認し「Close and log out」をクリックする。
![WS004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/f5f91442-0d9b-0829-5eb4-c6e015190fa5.jpeg)

## 2. Dockerの起動確認

1. Docker Hubへのログインが求められる画面が表示される。<br>Docker Hubのアカウント名・パスワードを入力し「Log In」をクリックする。
![WS005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/1b056fe0-d00e-1560-2496-7a366d795b48.jpeg)

1. タスクバーにあるDockerのアイコンを右クリックし、「Settings」をクリックする。
![WS006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/15953c1b-7788-6edf-a55b-d5ff2e220b1d.jpeg)

1. 左下に「Docker running」と表示されていることを確認する。
![WS007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/51776392-b1c7-62f9-597c-205c61c30c71.jpeg)

1. Dockerの動作が重い場合は「Advanced」メニューでCPU・メモリを増やす。
![WS009.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/388127c3-db18-71c6-a724-5a9f2fc68123.jpeg)

## 3. Dockerとの接続

1. タスクバーにあるDockerアイコンを右クリックし、「Kitematic」をクリックする。
![WS044.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/a444c262-d6db-b2c0-3b4a-366d57befb0e.jpeg)

1. 「Download」をクリックする。
![WS018.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/8ae42e7d-dbcd-a6f7-6644-2d7c26c9d362.jpeg)

1. 「Kitematic-Windows.zip」をダウンロードする。
![WS019.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/07cbea40-febd-9412-a019-03c2d8dd759e.jpeg)

1. 解凍したフォルダにある「Kitematic」を起動する。
![WS020.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/da2fd6ad-0815-4afd-e737-510cb7d530b6.jpeg)

1. 「Connect to Docker Hub」の画面が表示される。<br>Docker Hubのアカウント名・パスワードを入力し「Log In」をクリックする。
![WS021.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/2c4c8a34-96b5-86a0-2005-7412bc7432cc.jpeg)

1. Dockerイメージ一覧の画面が表示されたことを確認する。<br>その後、左下の「Docker CLI」をクリックする。
![WS024.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/c61efc21-3ffa-c4f2-1777-0c735d09d589.jpeg)

1. Power Shellが起動したことを確認する。
![WS025.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307261/0490be69-51eb-6044-5779-bc5c0992e9f4.jpeg)

1. Dockerに接続したことを確認する。

    ```
 > docker --version
    Docker version 18.09.2, build 6247962
```

## 4. CentOSのDockerコンテナを作成する

1. CentOSのDockerイメージをダウンロードする。

    ```
> docker pull centos
    Using default tag: latest
    latest: Pulling from library/centos
    8ba884070f61: Pull complete
    Digest:`<br> `sha256:a799dd8a2ded4a83484bbae769d97655392b3f86533ceb7dd96bbac929809f3c
    Status: Downloaded newer image for centos:latest
```

1. Dockerイメージをダウンロードされたことを確認する。

    ```
> docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              9f38484d220f        4 months ago        202MB
```

1. CentOSのDockerコンテナを作成する。<br>使用するコマンドは`docker run -d --privileged -h <ホスト名> --name <コンテナ名> <イメージ名> /sbin/init`

    ```
> docker run -d --privileged -h centos_test --name centos_container centos /sbin/init
    b79f4102071fdcb36e76f1c6281e590ba740f59e0842a5565e4ff56c1da48cac
```

1. 作成したDockerコンテナのコンソール画面に入る。<br>使用するコマンドは`docker exec -it <コンテナ名> /bin/bash`

    ```
> docker exec -it centos_container /bin/bash
```

1. CentOSのコンソール画面に入ったことを確認する。

    ```
# uname -a
Linux 591f1d983b96 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
```

    ```
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
```

1. その後はお好みに設定する。

1. CentOSのコンソールから抜ける際は`exit`を実行する。

   ```
   # exit
```

## 5. Dockerコンテナを停止する

1. 起動しているDockerコンテナ一覧を表示する。

    ```
> docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    b79f4102071f        centos              "/sbin/init"        2 weeks ago         Up 3 minutes                            centos_container
```

1. 使用しないDockerコンテナを停止する。<br>使用するコマンドは`docker stop <CONTAINER ID または コンテナ名>`

    ```
    > docker stop b79f4102071f
```
1. 指定したDockerコンテナが停止したことを確認する。`STATUS`の値が`Exited`と表示されていることを確認する。

    ```
    > docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
    b79f4102071f        centos              "/sbin/init"        2 weeks ago         Exited (137) About a minute ago                       centos_container
```

## 6. DockerコンテナをDockerイメージとして保存する。

1. Dockerイメージとして保存したいDockerコンテナの`CONTAINER　ID`を確認する。

     ```
    > docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
    b79f4102071f        centos              "/sbin/init"        2 weeks ago         Exited (137) About a minute ago                       centos_container
```

1. Dockerイメージとして保存する。<br>使用するコマンドは`docker commit <CONTAINER ID> <Dockerイメージ名>`

    ```
    >docker commit b79f4102071f centos_image
    sha256:7176ddb9332f1bed330958e8b843e40502628754ba0338de195788aedd5ba802
```

1. Dockerイメージが保存されたことを確認する。

    ```
    > docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos_image        latest              7176ddb9332f        9 minutes ago       202MB
    centos              latest              9f38484d220f        4 months ago        202MB
```

# 最後に
Windows10のHyper-Vを利用してDockerを立ち上げ、軽量で高速にCentOS環境が作成することができます。またUbuntuなどのOSもDockerイメージをダウンロードすることで、様々なOSのDockerコンテナが作成できます。