Win10+WSL2+DockerDesktopでDocker環境構築

# サマリ
Win10にWSL2とDockerDesktopを入れて、Docker環境を構築してみました。

# 背景
コンテナ技術の触りだけでも理解して（というより触れて）おきたい…という謎の焦燥感により、
今回トライしてみました。

# ゴール
Win10でDocker環境構築、その後簡単な動作確認まで実施

# 対象読者
- WindowsにDocker環境を構築したい方
- なんとなくDocker環境ってどんなものか気になる方
- 自分（備忘のため）

# 前提
必須：Windows10環境及びインターネット環境
　　　（より具体的には以下※[Docker公式HP](https://docs.docker.com/desktop/install/windows-install/)より引用
　　　　> Windows 10 64-bit: Home or Pro 21H2 (build 19044) or higher, or Enterprise or Education 21H2 (build 19044) or higher.）
　　　※Windows11でも問題ないのですが、今回はWin10で実施したため要件は割愛
推奨：CUIに関する初歩的な操作スキル
推奨：WSL2（上記のDocker公式HPに以下の記載があり、WSLの環境が必要な認識です。
　　　　　　> WSL version 1.1.3.0 or later.）
　　　※ただし、本記事にてインストールするので、もし本記事ベースで作業される場合気にしなくても大丈夫です。
# 環境
- ホストOS：Window10 Home
- WSL：2
- Docker Desktop：4.22.1
- Docker：24.0.5
# 手順

### WSL2のインストール
以下の記事をベースにさせていただきました。
大変参考になりました。

https://www.kagoya.jp/howto/cloud/container/wsl2_docker/

基本的には上記記事の通りです。
ブラウザで「https://aka.ms/wsl2kernel」にアクセスし、インストーラを落とし、実行します。

:::note info
参考
あとから気づきましたが、[こちらのマイクロソフト公式ページ](https://learn.microsoft.com/ja-jp/windows/wsl/install)に記載の通り、
Win10でも以下のバージョンであればコマンド（`wsl --install`）でWSLをインストールできます。
（自環境も該当でした。。）
> Windows 10 バージョン 2004 以上 (ビルド 19041 以上) 

:::

そのままGUI上で実施していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/ac21678e-2531-6c5c-b1e7-7533abb0bd44.png)


![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/d6b91432-7f91-113b-4619-0d17cc0c34f0.png)

WSL2を既定のバージョンに設定しようとすると、上記のエラーがでました。
参考記事の以下の手順（の「仮想マシン　プラットフォーム」）の部分の確認漏れでした。。
> 「Linux用Windowsサブシステム（WSL）」と「仮想マシン プラットフォーム」を使えるようにするため、以下操作を行います。

チェックを入れることで、以下の通り正しく処理が終了しました。

![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/cd92d33d-2ce3-18e5-a3d0-ea2e077c2fb4.png)


その後、Microsoft Storeにてubuntuで検索かけると引っかかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/e2ba789b-d15c-d9af-9902-fcf05b97cc29.png)

入手というボタンがあるのでクリックすると、しばらくして下記のように開くに変わるので、そちらをクリック。
![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/78114e2c-bad2-8e4f-ef5c-4aa1399a8d44.png)

Ubuntuのターミナルが開くのでユーザ名とパスワードを適当に設定します。

![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/560fd325-b41d-2f96-cdce-9a4c1c8b71fd.png)

これでWSL2とLinuxディストリビューション（Ubuntu）の導入が完了です…！


### DockerDesktopのインストール
WSL2の時と同様に[こちらの記事](https://www.kagoya.jp/howto/cloud/container/wsl2_docker/)を参照しました。
[Docker公式サイト](https://www.docker.com/)にアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/090e4ec9-3a8a-a039-d444-8a95c05d37b3.png)

Download for Windowsの右側の矢印をクリックしてインストーラをダウンロードします。
![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/d5a862b7-5644-9a4a-640a-001bb225eee0.png)

インストーラを実行すると処理が自動で進み、以下の通り完了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/b0ff5e32-c57c-131a-5660-7aed3b1033c4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/70b2ecac-4fbc-9061-7ad0-5e4a914c963a.png)

dockerのバージョン確認すると、確かにインストールできていそうです。

![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/489cbc4c-d6b3-ca2a-b1bc-9394bf35c5cc.png)

:::note info
参考
インストール時に無視（close）してしまったのですが、以下は利用規約で、acceptしないと進めませんでした。（ちゃんと読んで進めろよ）

:::


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/382b0542-045f-ac7f-97bd-fa9b960b0750.png)

### Docker動作確認
せっかくなので少しだけ動作確認します。
以降は以下の記事を参考にさせていただきました。
ありがとうございました。

https://chigusa-web.com/blog/windows%E3%81%ABdocker%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6python%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89/


さっそくサンプルコンテナを起動します。

![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/00bfdf3a-6f59-de22-182c-5d50bdc94f0f.png)

手順通り`http://localhost/`をブラウザで開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/9df0daf8-c639-3b1f-6c5b-5062d1c7780e.png)

このURLが開ければコンテナ上のサーバにアクセスしているとのことなので、一安心と嬉しさが混じります…！

別途、DockerDesktopのアプリを起動して、左のContainerを選択し、作成したコンテナを確認します。
おお…作成できている…！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/b13819d9-3411-4e9a-4807-3a41a350a09c.png)

続いて、記事に沿ってPythonイメージを取得します。

![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/dce53ff5-4080-761c-12c4-a2e6951dc7d0.png)

確かに、ダウンロードできていることを確認。
![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/290d321d-25f8-f652-0ca8-aa710529ed54.png)

以下のコマンドで、コンテナを起動します。
`docker run -it --name pytest python:3.6 /bin/bash`

DockerDesktopを見ると、追加されていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/b94cf784-cf93-da40-3387-7ba5dd2615bf.png)

少し割愛しますが、参考記事通り
`docker run -it --name pytest python:3.6 /bin/bash`コマンドでコンテナ起動し、
その後vimを入れ、testとprintするPythonファイルを作成し、以下の通り正常に実行することができました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/cb768b69-cb98-15f6-558e-fc70a68aa265.png)

DockerでPython環境まで構築できました…！


# 結果
Windows10環境でWSL2とDockerDesktopのインストール、その後Dockerでコンテナ起動、Python環境構築までできました。

# 学び
今まで触ったことがなかった身としてはWindowsでの環境構築はかなりハードルがあるのかと思いましたが、
大きなエラーもなくできることがわかりました。（小並感）

# まとめ
写経ではあるものの、Windows10環境でDockerの環境構築ができました。
"完全に理解した"にも至っていないレベルではありますが、
それでも自分の手で環境構築できたのは勉強するうえで一歩前進ではと感じています。
将来的にはDocker環境を使った作業や開発などもやってより理解を深めたいと思います！