WindowsでDocker環境を試してみる

# 概要
軽量と話題のDockerを自分の作業PC Windows10にインストールして試してみる
WindowsでDockerを動かすためにはいくつかの方法があるみたいだけど今回試してみたのはDocker for Windows

↓のスペックでDocker for Windowsがサクサク動くのかどうか、、、

* Windows 10 Pro 64bit
* Intel Core m3 CPU @ 0.90GHz 1.51 GHz
* メモリ 4GB

2022年1月：
ずっとHyper-V版使用していましたが、**Docker Desktop WSL 2 バックエンド**版としてこの投稿の記載内容刷新しました！
↓に書いてある通りですが、特に**リソース消費を劇的に改善しています**に感動しました！！

https://matsuand.github.io/docs.docker.jp.onthefly/desktop/windows/wsl/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/8934c155-d1f6-fddf-1f51-7787d47ec27c.png)

### 注意事項

上記黄色枠記載の通りですが、Docker Desktopは、2022年2月1日から**有料化**されます。
ただし、従業員数250人未満、年間収益1,000万ドル未満、個人使用、教育目的、非商用のオープンソースプロジェクトで利用可能なので、その範囲内で利用しましょう。

## できるようになること

* Windows10環境でのDocker環境の構築

## 参考書籍
わかりやすくてDockerの入門書的な良本です^^

[プログラマのためのDocker教科書](https://amzn.to/2tZM3bc "プログラマのためのDocker教科書")　第3章
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4798153222/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4798153222&linkCode=as2&tag=docker_start_001-22&linkId=e8c37bc35bc1fd825b239e22485bd00a"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4798153222&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_001-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=docker_start_001-22&l=am2&o=9&a=4798153222" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[【Kindle版】プログラマのためのDocker教科書](https://amzn.to/2DnBEuL "【Kindle版】プログラマのためのDocker教科書")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B07BHK5KX7/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B07BHK5KX7&linkCode=as2&tag=docker_start_001-22&linkId=42b1ec5ac5d2d66f1edc047ac73be533"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B07BHK5KX7&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_001-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=docker_start_001-22&l=am2&o=9&a=B07BHK5KX7" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

Docker管理（Kubernetes）まで含めるとこちら↓

[仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん](https://amzn.to/3nOqjee "仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4839972745/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4839972745&linkCode=as2&tag=docker_start_009-22&linkId=bfd98360e74009c93c1fed93d24b60ae"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4839972745&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_009-22" ></a>

[【Kindle版】仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん](https://amzn.to/33IBE8T "【Kindle版】仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B08T961HKP/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B08T961HKP&linkCode=as2&tag=docker_start_009-22&linkId=462eaf7a1126239280dec67940e453a6"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B08T961HKP&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_009-22" ></a>


## およその作業時間

30分



## 動作システム要件

* 64 bit Windows 10 Pro, Enterprise, Education
* CPU仮想化　有効
![image.png](https://qiita-image-store.s3.amazonaws.com/0/188544/e8f7caf7-2fc6-dbaa-533e-607cc5458c82.png)

合わせて以下の手順のチェックと有効化のためにPC再起動を行う

1. Windows ボタンを右クリックし、[アプリと機能] を選択
1. 右側の関連する設定にある [プログラムと機能] を選択
1. [Windows の機能の有効化または無効化] を選択
1. [Virtual Machine Platform] [Windows Subsystem for linux] を選択して、[OK] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/2b092458-9ff4-a4c2-b841-9fe8120573ef.png)


## 必要な知識

* Docker知識^^;

## インストール手順
以下のサイトから**Docker Desktop Installer.exe**をダウンロードしてインストール後、インストールされた**Docker Desktop**を実行するだけ
WSL 2 の事前インストールが必要な記載もドキュメント上にありましたが、Docker Desktop Installer.exe の中でインストールされたので事前インストール不要で大丈夫でした。
私は以下の状態（WSL 2インストールされていない状態）でインストールしています

```bat
>wsl --list --verbose
Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
ディストリビューションは Microsoft Store にアクセスしてインストールすることができます:
https://aka.ms/wslstore
```

[公式ページ：インストール手順]
https://docs.docker.jp/docker-for-windows/install.html
[公式ページ：ダウンロードサイト]
https://hub.docker.com/editions/community/docker-ce-desktop-windows/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/38670385-7710-a333-2392-8acadf37b5fb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/50d48a92-7dd5-80a0-7828-6abcf0da82a2.png)



## インストール手順詳細
Docker Desktop Installer.exe をクリックして画面に従っていくだけです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/107e48ae-4ff5-ae43-0fc4-00330a124167.png)
最初に**WSL 2**のインストールチェックボックスがあるのでチェックしておきます。
後はインストールが終わるのを待つだけ。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/022c73ea-1aaa-e711-bb9f-d16baa09299e.png)
最後に同意画面が表示されるので内容確認、チェック、**Accept**します。
以上です。

インストールが完了したらWindowsのスタートメニューから**Docker Desktop**起動してみましょう。
ここからの**tutorial**と**Dashboad**がまた感動でした！
ちなみにこの時点でWSL 2がインストールされてました。

```bat
>wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2
```

Docker Desktop起動

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/298132cb-690f-f131-790f-bb8e310ae50d.png)
起動してます（1、2分待ちます）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/807fed08-a4e6-40ed-70e7-f840c39076f1.png)
なるほど。2分のtutorialがある。2分であればやってみましょう。
ということで**Start**ボタン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/a57f0182-9b32-fb18-961c-4e30196e383a.png)
左画面の説明、右画面のプロンプトというスタイルでtutorialが進みます。
プロジェクトという概念があって、git リポジトリにサンプルプロジェクトがあるようですね。
tutorialの通りコマンド実行します。（画面中央のコマンドが書かれた青いボタンを押すと勝手に実行されます）
右画面でコマンド実行が終わったら**Next Step**をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/2b1319ab-e1a3-6b84-1805-e448977ee0a2.png)
プロジェクトが出来上がったらビルドするようです。
右画面でコマンド実行が終わったら**Next Step**をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/18680069-e863-15ef-7d4b-a472ce69cc64.png)
最後にrun（Dockerイメージを起動）します。
これで起動するようです（ほんとに？）とりあえずtutorialを進めます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/1992c3be-1bbb-8411-263b-a636844d6fbe.png)
最後は自分でDockerイメージ変更したらShareしようね。ということなのでこのコマンドは実行せず（実行できないようにボタン押下できませんでした）、**Done**で終了です。
諸々のダウンロード時間があったので2分では正直終わらなかったですが、そうは言っても5分くらいでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/0cb78d9d-41b3-af2e-45f7-0789265624c7.png)
で、次に表示されたのがこれから大変お世話になる**Dashboad**画面でした。
とりあえずrunnningしているappがBrowserで動くよ。ということでクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/05e0354e-95a7-2344-eb7a-d4e02b341064.png)
おぉ！ほんとに動いてました！！ちょー簡単。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/4894bd0e-cf46-16d6-8151-edf12c8d7c18.png)

Dashboadに戻って他を確認してみると。。。
左から

* OPEN IN BROWSER
* CLI
* START(or STOP)
* RESTART
* DELETE

のようです。いつの間に１つ１つコマンド実行する時代じゃなくなってたのですね^^;
**CLI**ボタン押すと、Docker上のプロンプトが立ち上がって超便利。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/cebaad94-28ca-3ac3-d580-77274ff6144d.png)

インストールとtutorial以上です。Dashboad便利そうですね！

## では、結果

### メモリ使用量
【Docker Desktop起動前】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/cc1b6370-e30f-feaa-1619-12040efed941.png)
最近メモリ残があまりなく。。。Docker Desktop起動するかな。。。


【Docker Desktop起動後】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/acfc600b-5099-b98b-06dd-7eadcaa64e16.png)
おぉ起動しました！以前は最低1GB必要だったのに！！
この後、Dockerイメージ起動しましたが、微増でした。公式ページ記載の通り、使った分だけ（動的割当）ということですね。

【Docker Desktop起動後しばらく放置】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/304d73ad-62d1-fee9-3cb8-c77050f3d6c0.png)
ここまで下がりました。
起動時**3.2GB**、放置で**3.5GB**なので、実質**0.3GB**のメモリでOK!?
凄い！この軽さでDocker（と、Dashboad）が起動できるのは感動です！！

### 起動時間
・Docker Desktop起動時間:約1分！

・コンテナ起動時間（初回）:約2分
　以下のコマンドをコマンドプロンプトで実行してubuntuコンテナを起動
　初回はDocker Hubからイメージのダウンロードをしてくれるため時間がかかる
　それでも2,3分程度（ネットワーク環境に依存）

```bat
> docker run -it ubuntu bash
```


・コンテナ起動時間（2回目以降）:3秒！！
　2回目以降はローカルキャッシュしているイメージを使うため3秒と言わず一瞬^^

Docker Desktop上の画面にも自動で追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/9c22aebc-e921-21bd-3787-a0ac48437562.png)

コンテナのページも以下の通り追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/3eaff565-76f1-a08b-5e99-f0ae5876fb15.png)

## まとめ
確かにサクサク動く！
**Docker Desktop WSL 2 バックエンド**版、**Dashboad**で劇的進化してました！！
私のDocker Desktop 知識 Update していなかった時間が長かっただけに進化にびっくりで大興奮でした＾＾


## 参考

Docker全体像のイメージ図は以下を参照

　[Dockerの基本機能と全体像のイメージを整理してみる](https://qiita.com/fkooo/items/934c7b6f1f0c0e8d1b21 "Dockerの基本機能と全体像のイメージを整理してみる")

EC2でもやってみました

　[AWS EC2 でDocker環境を無料で試してみる](https://qiita.com/fkooo/items/bb921218313123c14358 "AWS EC2 でDocker環境を無料で試してみる")

AWS ECSでもやってみました

　[AWS ECSでDocker環境を試してみる](https://qiita.com/fkooo/items/d7d98e16e91921508450 "AWS ECSでDocker環境を試してみる")

Docker管理（Kubernetes）の勉強はこちら

[仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん](https://amzn.to/3nOqjee "仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4839972745/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4839972745&linkCode=as2&tag=docker_start_009-22&linkId=bfd98360e74009c93c1fed93d24b60ae"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4839972745&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_009-22" ></a>

[【Kindle版】仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん](https://amzn.to/33IBE8T "【Kindle版】仕組みと使い方がわかる Docker＆Kubernetesのきほんのきほん")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/B08T961HKP/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=B08T961HKP&linkCode=as2&tag=docker_start_009-22&linkId=462eaf7a1126239280dec67940e453a6"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=B08T961HKP&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_009-22" ></a>


Dockerをさらに勉強したい方は以下を参照
参考書籍がわかりやすかったので実際にやってみました
[参考書籍]
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4798153222/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4798153222&linkCode=as2&tag=docker_start_001-22&linkId=e8c37bc35bc1fd825b239e22485bd00a"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4798153222&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL110_&tag=docker_start_001-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=docker_start_001-22&l=am2&o=9&a=4798153222" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
　[WindowsでDocker Hubからイメージをダウンロードしたりアップロードしたりしてみる](https://qiita.com/fkooo/items/8a29e308f9eb9ce7648e "WindowsでDocker Hubからイメージをダウンロードしたりアップロードしたりしてみる")
　[Docker for Windowsでイメージからコンテナを生成／操作してみる](https://qiita.com/fkooo/items/ad7d023b59df71cc9a60 "Docker for Windowsでイメージからコンテナを生成／操作してみる")
　[Windowsで構成情報をDockerfileに定義してイメージを作成してみる](https://qiita.com/fkooo/items/53b2ea865e8c2c7fec27 "Windowsで構成情報をDockerfileに定義してイメージを作成してみる")
　[WindowsでDocker Composeを使ってマルチコンテナ環境を作ってみる](https://qiita.com/fkooo/items/69a050da265c712763ec "WindowsでDocker Composeを使ってマルチコンテナ環境を作ってみる")
　[WindowsでDocker Machineを試してみる](https://qiita.com/fkooo/items/356c9954181c00818f12 "WindowsでDocker Machineを試してみる")