Windows10 に WSL2 をインストール(Docker Desktopの前準備)
やりたいことは、Windowsパソコンで、Dockerコンテナの実験君を簡単に実施したい!! ということですが、
WindowsでDockerコンテナを簡単に実行するには、VirtualBoxもあるけど、今回はDocker Desktopでやってみたい!!!
ということで、そのためには、WindowsにWSL2をインストールしようとなりました。
Windows10 に WSL2インストール
■WSL2とは?
Windows10の大型アップデート、Windows 10 May 2020 Update が2020年5月28日より配信され、同時配信したWSL 2(Windows Subsystem for Linux 2)について、従来のWSLとの違いを考察します。
WSL 2を使用する場合にはWindows 10のバージョン2004、ビルドが19041以上への更新が必要です。
WSL 2とはWindows Subsystem for Linux 2の略で、Windows 10上でLinuxを動作させるための仕組みであるWSLのバージョン2といった位置付けです。
Windows上でLinuxを動作させて、動作確認用などに使えます。WSL1の上に、WSL2を導入できますが、Linux起動時にWSL1 か WSL2か、どちらで動作させるか選択できます。
従来のWSLはLinuxカーネルではなく、WinカーネルがLinuxシステムコールを受け取り、それをWindowsシステムコールへ変換してましたが、変換が完全ではなかったので、Docker等のソフトウェアが動作しないことが多々ありました。
WSL 2ではHyper-Vを利用した完全なエミュレーション(辺な言い方)で、Linuxカーネルそのものが動作します。Dockerも動作するようになりました。
Hyper-VはWindows 10 Homeでは動かず、WSLも動きませんでしたが、WSL2に関するHyper-V機能だけ、Win10 Homeで動くようになり、WSL2も動くようになりました。
また従来のWSLは、IPアドレスがWindowsと共有でしたが、仮想ネットワークが作成され、個別のIPアドレスが割り当てられるようになりました。
■WSL2の弱点
【弱点】 サーバープロセスは通常、initプロセスから起動されるが、WSLはシェルが直接起動するので、前提となる処理が行われない。
【解決方法】 ①「systemd」を動かす ②Dockerコンテナを使う
■WindowsのWSL機能の有効化
下記のように、「Linux用Windowsサブシステム」と「仮想マシンプラットフォーム」をチェックします。
CPUの仮想化支援機能を使うので、BIOS/UEFI設定で、仮想化支援機能を有効にします。

■WSL2のUbuntuを導入
Microsoftストアで、Ubuntu20.04LTS をダウンロードします。



■WSL2がデフォルトになるようにコマンド入力
wsl –set-default-version 2

■Ubuntu を起動

※ Windows Terminal もシェル実行などできる

Ubuntu のコマンドプロンプトからは、「exit 」で抜けられる。以下のように、Windows Terminalから「wsl」入力で、Ubuntuにログインできる。(実体はPowerShellみたい)

「genie」でWSLから「systemd」を使う
■ .NET Core ランタイムをインストール
※ genie は .Net Core で作られている
Ubuntuにリポジトリ追加
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

パッケージ一覧を更新 sudo apt update

.NET Core ランタイムをインストール

wsl-translinux のリポジトリを追加
curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash

再度、パッケージ一覧を更新して、systemd-genie パッケージをインストール
sudo apt update;sudo apt install systemd-genie

■ genieを起動
「genie」はWSL1ではサポートしていないと怒られたので、

一度、WSL Ubuntu から抜けて、調べると Ubuntu18.04 の WSL1 で動いていた。

WSL のデフォルトを Ubuntu20.04 に変更し、WSL2に変更
wsl –setdefault Ubuntu-20.04 2


genie に入った後に、「exit」で抜けると、genie を抜けたWSL環境になり、
さらに「exit」でPowerShellに戻る。
次の投稿で、Docker-Desktop から WordPressを起動します。
続く:Windows10 に Docker Desktop をインストール
