WSL2を用いてDocker Desktopでローカル環境を構築する

目次
WSL2のセットアップ
インストール
まずはPower Shellを管理者として実行します。
コマンドを打ち込んでWSL2をインストールします。
wsl --install
以上のコマンドで以下の内容が実行されます。
- オプション コンポーネントの有効化
- 最新Linux カーネルのダウンロード
- WSL2の既定設定
- Linuxディストリビューションのインストール(Ubuntu)
ユーザー登録
完了するとUbuntuのウィンドウが開くので、そこでユーザーを登録します。
以下のように質問されるので対話的に回答していきます。
Enter new UNIX username: 任意のユーザー名
New password: 任意のパスワード
Retype new password: 任意のパスワード
ユーザー登録まで完了したらUbuntuのOS情報を確認してみます。
UbuntuのOS情報は、Ubuntuのウィンドウで以下のコマンドを実行します。
cat /etc/os-release
以下の様にOS情報が表示されればOKです。
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms—and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
Docker Desktop for Windowsのセットアップ
インストールと設定
こちらからインストーラーをダウンロードしてインストールを開始します。
完了後にDocker DesktopのSettingsでWSL Integrationを設定します。
「Enable integration with my default WSL distro」と「Ubuntu」にチェックを入れましょう。
その後、右下のApply & Restartをクリックします。
これでWSLからDocker Desktopを利用することができるようになります。
利用可になったかを確認する為、Ubuntuのウィンドウで以下のコマンドを実行します。
docker --version
Dockerのバージョンが表示されればOKです。
メモリ使用上限を設定する
現在のままだとメモリの使用上限を設定していない為、
利用中に『Vemmem』というプロセスが大量のメモリを使ってしまう事になります。
それを防ぐ為に以下のようにC:\Users\ユーザー名\の配下に「.wslconfig」という設定ファイルを作成し、以下の内容を書き込みます。
※memory, swap共に設定値は適切な値に適宜変更してください。
[wsl2]
memory=3GB
swap=5GB
設定を適用させる為、以下のコマンドをPowerShellで実行してWSLを再起動します。
# 停止
wsl --shutdown
# 再度起動する場合はWindows左下の検索窓に『Ubuntu』と入力し見つかったものをクリック。
Ubuntuが立ち上がったら以下のコマンドを実行して確認します。
free -h
MemとSwapそれぞれが設定した値になっていればOKです。
WSL2の確認とWindows Terminalの導入
今度はWSL2が正しく設定されているかを確認します。
PowerShellを開いて以下のコマンドを実行します。
wsl -l -v
以下の様にVERSIONの列が「2」であればOKです。
PS C:\Users\SD-PC031> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
WSL側(Ubuntu)、Windows側(PowerShell)をそれぞれ開くのは手間なので
マイクロソフト製の端末エミュレータ『Windows Terminal』の導入をオススメします。
こちらから入手できます。
事前にWindows Terminalをインストールしている場合は、以下のようにタブ管理になり、Ubuntuも自動的に追加されます。

事前にインストールをしていない場合は以下の手順で追加可能です。
まずPowerShellを開き
[guid]::NewGuid()
と打ち込む事でGUID(Globally Unique Identifier)を生成します。
Windows terminalを開き、『設定』 → 『JSONファイルを開く』を選択し、jsonファイルに先程生成したGUIDを以下のように追記する事でUbuntoがタブに追加されます。
{
"guid": "{生成したGUID}",
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl"
}
ソースコードをWSL側に移動する
既存のソースコードがWindows側にある場合、利用可能ですが動作が非常に重くなります。
その為、Ubuntuのタブを開き、以下のコマンドを実行しWindows側のソースコードをWSL側に移動します。
WindowsのCドライブが/mnt/cにマウントされているので以下のようにファイルを移動できます。
cd ~ && mv /mnt/c/Users/ユーザー名/ソース ./任意の場所/
あとはUbuntu側のコマンドラインで通常通りdockerを起動すれば利用可能です。
まとめ
いかがだったでしょうか。
WSL2は簡単に始められる上に、本物のLinuxカーネルが動作しているのも嬉しいですね。
WindowsPCは比較的安価な物も多いので、自宅での学習用などに用いるにも便利です。
ぜひお試しください。