概要
Windows 10 で WSL 2 (Windows Subsystem for Linux)の動作要件を満たしている状態で、Docker Desktop を使えるようにするまでの流れを整理しました。ざっくり書きますと「Your system supports WSL 2!」が表示された時、WSL 2 に移行するための手順です。
動作環境を満たすと、Docker Desktop 起動時、この表示が出ます。
※ 動作環境は、Winddows 10 Inside Program 等で動作要件を満たすか、あるいは GA 版の提供を待つ必要があります。
※ WSL1 や WSL を使わないバージョンからのデータは自動的に移行されません。
この投稿は、公式の WSL 2 ドキュメント を読んでも、このままでは Docker for Desktop を動かすに至らなかったので、状況整理のために作成しました。
動作要件
WSL2 が動作する Windows 10 ( ※詳細 )
バージョン 2004、ビルド 19041 以上に更新された Windows 10 を実行している。
本原稿執筆時点では、 Inside Program に加入する必要があります。
手順
全く WSL に対応していないシステムで、WSL 2 対応の Docker Desktop for Windows を使うための手順です。
動作要件を満たすかどうかの確認
Docker Desktop for Windows を起動し、次のウインドウが自動的に出ることを確認します。おそらく、システムが対応すると、意図せず次の画面が出ます。
もし、データ移行の準備が出来ていなかったり、WSL 2 に対する理解が十分でなければ「Not now」をクリックし、現時点では WSL 2 に移行すべきではありません。
ここで「Enable WSL 2」(WSL 2)を有効化するをクリックすると、システム状態のチェックに入ります。デフォルトの Windows 10 では WSL は入っていないため、「WSL 2 is not installed」(WSL 2 はインストールされていません)と表示が出ています。
ここでセットアップ作業を進行するには「 Stop Docker 」をクリックします。
WSL 2 のセットアップ
ここは基本的に 公式ドキュメント の通り作業をします。
「PowerShell」を管理者として実行します。Windows ボタンを押し、「PowerShell」と入力すると実行するプログラム候補が自動的に出ますので、「管理者として実行」をクリックします。
次に PowerShell が起動します。
WSL をセットアップするコマンド dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
を実行します。
公式ドキュメントでは「wsl --set-default-version 2」の実行とありますが、
PS C:\WINDOWS\system32> wsl --set-default-version 2
wsl : 用語 'wsl' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください
。
発生場所 行:1 文字:1
+ wsl --set-default-version 2
+ ~~~
+ CategoryInfo : ObjectNotFound: (wsl:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
このように wsl
のパスが通っていない旨の表示が出ます。
PC を再起動します。
再起動後 WSL 2 Linux カーネルの更新が必要です( 詳細 )。
マイクロソフトのドキュメントを確認します。ウェブブラウザで、次の URL を開きます。
- WSL 2 Linux カーネルの更新 | Microsoft Docs
この中の「x64 マシン用の最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロードしてください。」のリンク先をクリックします。
「wsl_update_x64.msi」のダウンロードが開始しますので、ファイルを保存して、ダウンロードが終わったら実行します。
以上が WSL 2 のシステムまわりの設定です。
Linux ディストリビューションのセットアップ
次は linux ディストリビューションを Windows 10 にセットアップします。Windows 10 では「アプリ」として Linux ディストリビューションが配布されています。WSL 2 で Docker を使うには、Ubuntu など Linux ディストリビューションをセットアップする必要があります( 詳細 )。
まずは、 Microsoft Store を開きます。
それから「Ubuntu 」を選択し、「入手」をクリックします。
ダウンロードが完了すると、 Windows のスタートメニューをクリックし、「Ubuntu」と入力します。
暫く、次の表示が出るまで待ちます。
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
ここで、セットアップする Ubuntu のユーザ名とパスワードを指定します。
Enter new UNIX username: docker
New password:
Retype new password:
ここでは docker
と入力し(何でも構いません)、次に、パスワードを設定しています。
そうすると、Ubuntu にログインできます。
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Welcome to Ubuntu 20.04 LTS (GNU/Linux 4.19.84-microsoft-standard x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sat May 23 12:25:38 JST 2020
System load: 0.13 Processes: 8
Usage of /: 0.4% of 250.98GB Users logged in: 0
Memory usage: 0% IPv4 address for eth0: 172.29.185.157
Swap usage: 0%
0 updates can be installed immediately.
0 of these updates are security updates.
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
This message is shown once once a day. To disable it please create the
/home/docker/.hushlogin file.
この状態では特にすることもないので、 exit
を入力し、終了します。
PowerShell で WSL2 の設定
それから、再び PowerShell で管理者モードとして、実行するべき WSL のバージョンを 2
と明示します。
wsl --set-default-version 2
Docker Desktop の確認
あとは Docker Desktop を起動します。
画面上、「Skip tuotrial」を選び、起動した画面の右から3つめに「歯車」のマークがあり、そこをクリックすると User the WSL 2 based engine
にチェックが入っていれば、対応完了です。もし入っていなければ、チェックをいれます。
この状態で、Docker は PowerShell 上で使えますので、「dokcer pull hello-world」や「docker run hello-world」などが使えます。
参考文章
- Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs