20H1 updateに伴うWSL1→WSL2への移行

随分古い話になってしまいましたが、メモに記録していたのをここに転記しておきます。

前提

当方の環境は次の通りです。

  • Windows 10 Pro (20H1 に update済)
  • WSL1セットアップ済み(WSL機能は有効済み)
  • Dockerエンジンは Docker Desktop for Windows を利用し、Dockerクライアントは WSL1 上の Ubuntu 18.04 LTS の docker-ce を利用

WSL1でも十分だったこともあり、WSL2にすると機構的に処理が遅くなるのではという懸念もあって、WSL1のままで運用していましたが、20H1に更新したことを機に、色々なサイトを参考にしながら WSL1 から WSL2 に移行しました。何をいまさらっていう感じだと思いますが、忘れっぽいので備忘録として書いておきます。

手順

手順は、ほぼこちらを参考にしています。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

1. Linux 用 Windows サブシステムを有効にする

  • コントロールパネル > プログラム > プログラムと機能 > Windowsの機能の有効化または無効化
  • 「Linux用 Windows サブシステム」のチェックがOnになっているかどうか確認

2. 仮想マシンの機能を有効にする

仮想マシンプラットホームオプション機能を有効にする

管理者として PowerShell を起動、次のコマンドを叩く

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

実際にコマンドを実行させるとこんな感じ

PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

展開イメージのサービスと管理ツール
バージョン: 10.0.19041.844

イメージのバージョン: 10.0.19042.928

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

ここで一応Windowsを再起動させておきます。

3. Linuxカーネル更新プログラムパッケージのインストール

カーネルが変わるからね。

リンク「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」より「wsl_update_x64.msi」をダウンロードし、実行する。

現在インストールされているLinuxディストリビューションと割り当てられているWSLバージョンは、次のようにして確認できる。

PS C:\WINDOWS\system32> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1

4. 既存の Ubuntu 18.04 を WSL1 から WSL2 に変更する

これは結構な時間がかかった。

PS C:\WINDOWS\system32> wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
PS C:\WINDOWS\system32> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         2

Ubuntu-18.04 を再起動すれば、STATEが “Running” なる。

5. Docker Desktop for Windows の設定

Settings > General

  • 「Expose daemon on tcp://localhost:2375 without TLS」のチェックボックスを Off にする
  • 「Use the WSL 2 based engine」のチェックボックスを On にする

Settings > Resources > WSL INTEGRATION

  • 「Enable integration with my default WSL distro」のチェックボックスを On になっていることを確認
  • 「Enable integration with addtional distros:」にて「Ubuntu-18.04」を On にする

以上設定したら「Applay & Restart」をクリック

PS C:\WINDOWS\system32> wsl --list --verbose
  NAME                   STATE           VERSION
* Ubuntu-18.04           Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2

確認

$ echo $DOCKER_HOST
tcp://0.0.0.0:2375

とか表示されたら、.profile か .bashrc とかにある

export DOCKER_HOST="tcp://0.0.0.0:2375"

の設定を削除しておく。

Dockerのバージョンを確認

$ docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:02:36 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:15:47 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Dockerが利用可能か確認

$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:f2266cbfc127c960fd30e76b7c792dc23b588c0db76233517e1891a4e357d519
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
:

コンテナやイメージの存在を確認

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
4860322911ff        hello-world         "/hello"            25 seconds ago      Exited (0) 24 seconds ago
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              d1165f221234        2 months ago        13.3kB

Docker Desktop 上に、コンテナやイメージが作成されていることを確認

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中