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」を有効にする。
- 「Windows 10 May 2020 Update」(所謂バージョン
- 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
等であればアップグレードが必要です。
私の環境では 2004
以上の 20H2
になっています。この場合は対応が不要ですので、次の WSL2 の導入へ進んでください。
バージョン2004 以上にあげる
2004
より前の場合、まずは Windows Update を行います。これで 2004
以上にあがれば OK です。
そうならない場合は Microsoft のサイトからバージョンをあげることができます。
このページの案内のとおりに進めればOKです。
WSL2 の導入
WSL2 導入の下準備
「Windows PowerShell」を管理者モードで起動します。( win
キーを押してからから PowerShell
と入力。左側ペインの「Windows 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 からインストール
先程表示されていたリンクをクリックするか、ブラウザに直接入力してみましょう。
すると Windows 10 の「Microsoft Store」アプリが起動します。
インストール可能な Linux の一覧が表示されていると思います。今回は「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 のインストール
インストーラをダウンロードし、実行します。「Download for Windows」で安定版のインストールになります。
途中の設定にある「Enable WSL 2 Windows Features」はチェックを入れます。
インストールが完了すると Windows の再起動になります。
Docker Desktop for Windows の起動
再起動後、自動で Docker が起動します。しばらくするとダイアログが表示されると思います。真ん中に「Start」というボタンがあるので押しましょう。チュートリアルがはじまりますが、不要であれば「Skip Tutorial」リンクをクリックしてもOKです。
その後、画面上部の歯車アイコンをクリックします。「User the WSL 2 based engine」にチェックが入っていればOKです。
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