Multi Vitamin & Mineral

Multi Vitamin & Mineral です。プログラムに関することを書いております。

Windows 10 の WSL2 上で動く Docker を導入する手順

Windows 10 に Docker を導入するための手順をまとめました。 Docker は WSL2 上で動かす前提の説明になっています。

導入は結構手間です。インストーラーの Next ボタンをポチポチってだけではないのは分かってましたが、意外に面倒だと思いました。 VirtualBox 時代に比べれば良くなりましたがまだ手間かな。(VirtualBox はインストールの手間というより Docker が動いてる場所が違うんですが。)色々事情があるのも分かるんですけれども、なんとかもっと簡単になって、気軽に使えるようになって、もっと利用者が増えて欲しいと思いました。

環境

2020年12月現在、Windows 10 で Docker をやるにはこの環境が良いんじゃないか的な話です。

  • Windows 10 の話
    • 「Windows 10 May 2020 Update」(所謂バージョン 2004 )以上である。
    • 「WSL2」を有効にする。
  • Docker の話
    • 「Docker Desktop for Windows」をインストールする。

WSL2 以前は Windows 10 の Home か Pro でインストール方法が違っていた(Pro だけできる方法があった)のですが、 WSL2 の登場でどちらも同じ方法を採ることができるようになりました。

ということで、一通りインストールして、設定して、 docker -v でインストールがされたことを確認するまでを説明します。

Windows 10 May 2020 Update

Windows 10 にはマイナーバージョンがあります。Windows Update によりちょっとずつ進化していきます。2020年5月向けの更新が「Windows 10 May 2020 Update」で、バージョンは 2004 になります。

  • Windows 10 May 2020 Update = 2004

このアップデートは一律ではありません。徐々に利用者が広がる(ローリングアップデートと呼ぶ)ようになっています。早くアップデートしたい場合は Microsoft のサイトから実施することができます。

WSL2

「WSL2」 = 「Windows Subsystem for Linux 2」です。

Windows 10 上に仮想環境を作り、その上に本物の Linux を乗っけられる仕組みです。 Windows のカーネルを介さない仕組みになっています。(以前は Windows のカーネル向けの命令に変換する仕組みだった。)

Windows 10 のバージョンアップ

Windows 10 のバージョンアップに関する手順です。

今のバージョン確認

「winver」を起動することで確認できます。 win + r で 「ファイル名を指定して実行」が出来ますので、そこで winver を入れて Enter です。

「バージョン nnnn 」と表示される数字を確認します。 2004 以上であればOK。 1909 等であればアップグレードが必要です。

winver の起動
winver の起動

winver の表示
winver の表示

私の環境では 2004 以上の 20H2 になっています。この場合は対応が不要ですので、次の WSL2 の導入へ進んでください。

バージョン2004 以上にあげる

2004 より前の場合、まずは Windows Update を行います。これで 2004 以上にあがれば OK です。

そうならない場合は Microsoft のサイトからバージョンをあげることができます。

www.microsoft.com

このページの案内のとおりに進めればOKです。

WSL2 の導入

WSL2 導入の下準備

「Windows PowerShell」を管理者モードで起動します。( win キーを押してからから PowerShell と入力。左側ペインの「Windows PowerShell」をクリック後、右側ペインの「管理者として実行」をクリックします。)

PowerShell の起動
PowerShell の起動

そして、以下のコマンドでインストールされている機能を確認します。

  • dism.exe /online /get-features
PS C:\WINDOWS\system32> dism.exe /online /get-features
...中略...

機能名 : Microsoft-Windows-Subsystem-Linux
状態 : 無効

...中略...

機能名 : VirtualMachinePlatform
状態 : 無効

...以下略...

以下のコマンドで有効化します。

  • dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  • Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

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

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

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

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

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

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
PS C:\WINDOWS\system32> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
この操作を完了するために、今すぐコンピューターを再起動しますか?
[Y] Yes  [N] No  [?] ヘルプ (既定値は "Y"):

PS C:\WINDOWS\system32> Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

Path          :
Online        : True
RestartNeeded : False

そのまま再起動します。再起動後、再度確認します。

  • dism.exe /online /get-features
PS C:\WINDOWS\system32> dism.exe /online /get-features
...中略...

機能名 : Microsoft-Windows-Subsystem-Linux
状態 : 有効

...中略...

機能名 : VirtualMachinePlatform
状態 : 有効

...以下略...

どちらも有効になっていたらOKです!

この状態で WSL の状態を確認してみます。

  • wsl -l -v
PS C:\WINDOWS\system32> wsl -l -v
Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
ディストリビューションは Microsoft Store にアクセスしてインストールすることができます:
https://aka.ms/wslstore

これ、「Linux のベースはあるけど Linux はないぞ。Store からインストールしてね」ということを言ってる訳です。ここに表示されている URL からインストールが可能です。次項で説明を続けます。

Ubuntu をインストール

Microsoft Store からインストール

先程表示されていたリンクをクリックするか、ブラウザに直接入力してみましょう。

https://aka.ms/wslstore

すると Windows 10 の「Microsoft Store」アプリが起動します。

インストール可能な Linux の一覧が表示されていると思います。今回は「Ubuntu」をインストールします。(画像ではインストール済みになっています。)

Ubuntu のインストール
Ubuntu のインストール

インストールが完了したらスタートメニューから「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: (Enter your username)
New password:
Retype new password:

ユーザ作成が終わったら exit と入力し作業を終了します。

WSL のバージョンを 2 に更新する

さて、ここで PowerShell から先程と同じように WSL の状態を確認してみます。

  • wsl -l -v
PS C:\WINDOWS\system32> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         1
PS C:\WINDOWS\system32>

x「Ubuntu」がインストールされたことが分かります。が、バージョンは 1 となっています。これを 2 に更新します。

そのためには以下のコマンドを実行することになります。

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

また WSL の状態を確認してみます。

  • wsl -l -v
PS C:\WINDOWS\system32> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

更新が成功しました!

エラーが発生した場合

私の場合、途中でエラーが発生してしまいました。

PS C:\WINDOWS\system32> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください

書いてあるとおり、この URL にアクセスして「Linux カーネル更新プログラム パッケージ」をダウンロード&インストールします。この後操作を続けたところうまくいきました。めでたし。

Docker の対応手順

Windows 10 の準備は整ったところで、 Docker を入れて行きましょう。その手順です。

Docker Desktop for Windows のインストール

www.docker.com

インストーラをダウンロードし、実行します。「Download for Windows」で安定版のインストールになります。

途中の設定にある「Enable WSL 2 Windows Features」はチェックを入れます

インストールが完了すると Windows の再起動になります。

Docker Desktop for Windows の起動

再起動後、自動で Docker が起動します。しばらくするとダイアログが表示されると思います。真ん中に「Start」というボタンがあるので押しましょう。チュートリアルがはじまりますが、不要であれば「Skip Tutorial」リンクをクリックしてもOKです。

Docker の起動画面
Docker の起動画面

その後、画面上部の歯車アイコンをクリックします。「User the WSL 2 based engine」にチェックが入っていればOKです。

Docker の設定画面
Docker の設定画面

gitbash , cmd , PowerShell 、なんでもよいので docker -v と入力します。バージョン情報が表示されたらインストールが完了です。

PS C:\WINDOWS\system32> docker -v
Docker version 20.10.0, build 7287ab3
PS C:\WINDOWS\system32> docker-compose -v
docker-compose version 1.27.4, build 40524192

尚、 Docker が WSL2 上で動いていることを確認できます。。

  • wsl -l -v
PS C:\WINDOWS\system32> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2