ようやく今年も業務が終了して、年末の長期休暇に入ったので、私が使っている開発マシンのWindows10 Pro 1909を、最新のバージョン20H2へアップグレードしたいと思います。
通常だと1090の次はバージョン2004になりますが、今回は一つ飛ばしで20H2までアップグレードします。
実は、今回の真の目的はアップグレードではなく、バージョン2004から強化された「Windows Subsystem for Linux(WSL)のバージョン2」を利用してDocker環境を快適にすることです。
これまでWindows上のHyper-V内にLinux仮想マシンを起動させて、そのうえでLinixコンテナを起動させる作りでした。Linux仮想マシンが立ち上がるまでDockerが使えなかったり、メモリもとられてしまってPCも重くなってました。
以下の記事にもまとめてますが、Windowsのコンテナってかなり複雑な歴史があり、使いにくい部分があったのですが、WSL 2を利用することでようやくLinuxコンテナを快適に使うことができるようになるのです。
さらに、これまで利用できなかったWindows10のHomeEditionでも利用することができるため、これでWindows開発環境の効率が爆上がりなのは間違いないです。
それではOSのアップグレードから進めていきます。
実行環境
- OS: Windows 10 Pro (バージョン1909, OSビルド19041.264)
- WSL バージョン2
- Docker Desktop for Windows Version 2.5.0.0(49427)
→既存のHyper-VべースからWSL2ベースへ切り替えを実施します。
Windows Pro 1909から20H2へのアップグレード
検索窓から「winver」と入力すると以下の画面が開きます。バージョンは1909です。

「設定」→「更新とセキュリティ」→「Windows Update」からバージョン20H2をインストールします。

結構(1時間くらい?)かかりましたが、バージョンアップが完了しました。

Docker for Windowsのインストール
以下にまとめてますが、Homeでも大丈夫なはず!!
Windows Subsystem for Linux(WSL)のインストール
バージョン20H2にアップグレードしただけでは、Windows Subsystem for Linux(WSL)がインストールされていません。
以下の手順に従ってWindows Subsystem for Linux(WSL)をインストールします。

WSL機能の有効化
まずは、dism.exeを使って機能を有効化していきます。dism.exeとは展開イメージのサービスと管理の役割のために、Windows イメージを提供および準備するために使用できるコマンドライン ツールです。
Powershellを管理者で開いて以下のコマンドを実行して、WSL機能を有効化します。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

さらにDockerで利用するためにVirtualMachinePlatformの機能を有効化します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

WSL 2 Linux カーネルパッケージの取得
次にWSL2のLinux Kernelをダウンロードしてインストールします。

ダウンロードしたらインストールします。


WSLのバージョンを2に変更
次にコマンドでWSLのバージョンを2に変更します。
wsl --set-default-version 2

WSLにUbuntuのインストール
WSLにUbuntuをインストールします。MicrosoftStoreを開いてUbuntuのイメージを取得して起動します。



起動ボタンを押すと、自動的に画面が立ち上がってきます。初期ユーザとパスワードを登録してください。rootはalready existsでダメだったのでuser01を登録しました。


Ubuntuが立ち上がります。

DockerをWSL2ベースに切り替える
それではいよいよHyper-Vベースで動作しているDockerをWSL2ベースに切り替えます。
DockerのSettingを開いたら「Use the WSL2 based engine」にチェックします。

Dockerの再起動を求められますので再起動します。

いくつか警告がでますがそのまま進めていきます。


Dockerの再起動が終わったらwslコマンドでイメージを確認します。docker-desktopとdocker-desktop-dataが作成されて起動していることが確認できま。

Hyper-Vを確認してみます。いままで動いていたDockerDesktopVMがオフになっています。こいつの起動が重かったんですよ。やったぜ!

動作確認
それでは動作確認のため適当にコンテナをつくってみます。
前に作成したKnowledgeのイメージを起動してみます。

途中、WSL2のコンテナからファイル共有についての警告がでますが進めていきます。

コンテナも起動しています。

最後にコンテナにアクセスしてみます。

まとめ
ようやくWindowsでもHyper-V無しでDockerコンテナを使うことができるようになりました。
Hyper-Vベースでも使えないことはなかったのですが、やはりOSの動作が遅くなったり、色々と不満がありましたが、これで軽快に開発・テスト環境を簡単に構築することができそうです。
さらにWindows Homeで動くので気軽にDockerを試すことができそうです。
あとはこれまでWindowsの仮想マシン上では仮想on仮想の構成となるので、ちょっとハイパーバイザ側に細工をしないと動かなかったのですが、動くのか?
あとは、WSL2で動いてるLinuxも仮想マシンの代わりになるかどうかについても試してみたいと思います。
Dockerのオススメ勉強方法
私がオススメするDocker初心者向けの最初に購入すべき書籍は「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築」です。
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築

本書ではDockerの基本的な概念などの座学ももちろんありますが、実際に、Dockerのインストール方法やWebサーバーをコンテナで構築するハンズオンを通じて学習することができるため、特に初心者の方はは分かりやすい内容となっています。
今回は以上となります。
コメント