図解:Windows10のLinuxコンテナ比較（LCOW、DockerDesktop VM、WSL2、VirtualBox）

# 1. はじめに
Windows10の環境にLinuxコンテナを構築する手段として、

- Hyper-V + Docker Desktop (+ Experimental Features) + Windows Container (LCOW)
- Hyper-V + Docker Desktop + Linux Container (Docker Desktop VM)
- WSL2 + Docker Desktop (WSL 2 backend)
- VirtualBox + Linux VM + Docker

といった方法がありますが、

- 構成の比較
- 構築に必要な設定
- 各方式の特徴

をそれぞれ1枚の図にまとめてみました。


# 2. 各コンテナ方式の構成比較
![Windows10-Linuxコンテナ構成の比較.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/11c8dec7-40d3-f7e2-0708-b8f72d64a27f.jpeg)
図をクリックして拡大


# 3. 各コンテナ方式の構築に必要な設定
![Windows10-Linuxコンテナの設定.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/ce3b1013-34b8-c815-6aca-af9b5d87e89f.jpeg)
図をクリックして拡大

※参照[「6. 設定画面例」](#6-設定画面例)


# 4. 各コンテナ方式の特徴
![Windows10-各Linuxコンテナ方式の特徴.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/2cd38097-7b87-27b0-f168-23f2a7fc478d.jpeg)
図をクリックして拡大


# 5. どの方式を選べばよいか？
　開発環境として利用するであれば、Windows 10 Homeもサポートされていて、設定も簡単な
　　WSL2 + Docker Desktop (WSL 2 backend)
が良いのではないかと思います。

　ちなみにWSL 2を利用せずにHyper-V方式でDocker Desktopを起動すると以下のようなメッセージが表示されます。（「Use Hyper-V」ボタンを押下すると継続できます。）
　WSL 2利用に誘導したいのかなぁと感じます。

![Docker-HyperV-DockerDesktopVM-Message-WSL2-is-not-installed-002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/b6df9789-df11-0c37-0cbe-ac9865fe3091.jpeg)



# 6. 設定画面例
## 6.1. Windowsの機能の有効化または無効化
![Windowsの機能の有効化または無効化.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/93409803-345b-3f52-5558-2eabb35c91fd.jpeg)

![Windowsの機能の有効化または無効化-02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/d8aabad3-7eed-4fb0-8f85-47c1f14a3323.jpeg)

![Windowsの機能の有効化または無効化-03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/09136810-d0a2-7fa8-295f-ffe5ab3ca9df.jpeg)



## 6.2. Switch to Windows containers
![Dockerアイコン-タスクトレイ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/b4728bbe-9131-21bf-3f1e-42ca707f65ae.jpeg)　![Switch-to-Windows-Containers.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/1258adba-87e2-969d-d18f-4b3a22274afa.jpeg)

## 6.3. Switch to Linux containers
![Dockerアイコン-タスクトレイ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/b4728bbe-9131-21bf-3f1e-42ca707f65ae.jpeg)　![Switch-to-Linux-Containers.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/873ddd28-e734-479a-a7e7-a60c0facce3b.jpeg)

## 6.4. experimental features
![ExperimentalFeatures.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/643108/2b7e2c8d-4601-643b-69a3-b9197dd5a26a.jpeg)
図をクリックして拡大


# 7. 参考文献
## 7.1. 書籍
##[Windows版Docker＆Windowsコンテナーテクノロジ入門](https://www.nikkeibp.co.jp/atclpubmkt/book/20/P86540/)
#####ISBN : 9784822286545、山内 和朗、日経BP

・Windowsのコンテナについて網羅的にかつ解りやすく説明されています。
・WSL 2に関しての記載はあまりありません。

##[Windows Subsystem for Linux 2 (WSL 2) Tips, Tricks, and Techniques](https://www.packtpub.com/product/windows-subsystem-for-linux-2-wsl-2-tips-tricks-and-techniques/9781800562448)

#####ISBN : 9781800562448、Stuart Leeks、Packt Publishing

・WSL 2について網羅的に説明されています。英語ですが図も多く理解し易いです。
・Amazonで買えます。

## 7.2. Web
[Microsoft] [Isolation Modes](https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/hyperv-container)
[Microsoft] [Linux containers on Windows 10](https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers)
[Microsoft] [Windows Subsystem for Linux Documentation](https://docs.microsoft.com/en-us/windows/wsl/)
[Microsoft] [Virtualization with Hyper-V – Know the basics](https://docs.microsoft.com/ja-jp/archive/blogs/ranjanajain/virtualization-with-hyper-v-know-the-basics)
[Docker] [Docker ❤️ WSL 2 – The Future of Docker Desktop for Windows](https://www.docker.com/blog/docker-hearts-wsl-2/)
[Docker] [Introducing the Docker Desktop WSL 2 Backend](https://www.docker.com/blog/new-docker-desktop-wsl2-backend/)
[Think IT] [CNDT2020シリーズ：Windowsコンテナの基本](https://thinkit.co.jp/article/18015)
[ASCII.jp] [Windows 10にはコンテナーがいっぱい](https://ascii.jp/elem/000/004/032/4032590/)
[SIOS TECH.LAB] [【連載】WSL2、Visual Studio Code、DockerでグッとよくなるWindows開発環境 〜 その4：Visual Studio Code、Dockerで改善！！ 〜](https://tech-lab.sios.jp/archives/21675)
[Qiita][@kikuchi_kentaro] [Docker Desktop の復習と、Windows Container に入門: Docker Desktop + Linux Container 復習編](https://qiita.com/kikuchi_kentaro/items/29dd46ea8d0fda6e7f02)
[Qiita][@kikuchi_kentaro] [Docker Desktop の復習と、Windows Container に入門: Windows Server Container 理論編](https://qiita.com/kikuchi_kentaro/items/2fb0171e18821d402761)
[Qiita][@matarillo] [WSL2とHyper-Vの関係](https://qiita.com/matarillo/items/ca1eecf8f9a3cd76f9ce)