Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

WSL 2 対応 Docker Desktop for Windowsを使うための手順

概要

Windows 10 で WSL 2 (Windows Subsystem for Linux)の動作要件を満たしている状態で、Docker Desktop を使えるようにするまでの流れを整理しました。ざっくり書きますと「Your system supports WSL 2!」が表示された時、WSL 2 に移行するための手順です。

image.png

動作環境を満たすと、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 を起動し、次のウインドウが自動的に出ることを確認します。おそらく、システムが対応すると、意図せず次の画面が出ます。

image.png

もし、データ移行の準備が出来ていなかったり、WSL 2 に対する理解が十分でなければ「Not now」をクリックし、現時点では WSL 2 に移行すべきではありません。

ここで「Enable WSL 2」(WSL 2)を有効化するをクリックすると、システム状態のチェックに入ります。デフォルトの Windows 10 では WSL は入っていないため、「WSL 2 is not installed」(WSL 2 はインストールされていません)と表示が出ています。

image.png

ここでセットアップ作業を進行するには「 Stop Docker 」をクリックします。

WSL 2 のセットアップ

ここは基本的に 公式ドキュメント の通り作業をします。

「PowerShell」を管理者として実行します。Windows ボタンを押し、「PowerShell」と入力すると実行するプログラム候補が自動的に出ますので、「管理者として実行」をクリックします。

image.png

次に PowerShell が起動します。

WSL をセットアップするコマンド dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
を実行します。

image.png

公式ドキュメントでは「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 を開きます。

この中の「x64 マシン用の最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロードしてください。」のリンク先をクリックします。

「wsl_update_x64.msi」のダウンロードが開始しますので、ファイルを保存して、ダウンロードが終わったら実行します。

以上が WSL 2 のシステムまわりの設定です。

Linux ディストリビューションのセットアップ

次は linux ディストリビューションを Windows 10 にセットアップします。Windows 10 では「アプリ」として Linux ディストリビューションが配布されています。WSL 2 で Docker を使うには、Ubuntu など Linux ディストリビューションをセットアップする必要があります( 詳細 )。

まずは、 Microsoft Store を開きます。

image.png

それから「Ubuntu 」を選択し、「入手」をクリックします。

image.png

ダウンロードが完了すると、 Windows のスタートメニューをクリックし、「Ubuntu」と入力します。

image.png

暫く、次の表示が出るまで待ちます。

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 にチェックが入っていれば、対応完了です。もし入っていなければ、チェックをいれます。

image.png

この状態で、Docker は PowerShell 上で使えますので、「dokcer pull hello-world」や「docker run hello-world」などが使えます。

image.png

参考文章

sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。
https://www.sakura.ad.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away