いろいろとRaspberryPi
を触っていて、たまたまカーネルのコンパイルを行うためのクロスコンパイル環境をUbuntu
で作成しようと思ったのですが、
Windows10 Homeエディション
ではDocker Desktop
が使用できないといった制限がありました。そのため、環境構築にはVirtual Box
などが必要になり、
かつインストール後にOSインストールも必要になるので、ちょっと面倒だなと思っていました。
最近、使用できるようになったWSL2(Windows Subsystem for Linux Version 2)
を使えばHomeエディションでもDocker Desktop
が使えるようになったようです。
※仮想化機能が使えないPCではWindows Homeエディション
でも使用できないので注意です。BIOSやタスクマネージャーなどで確認しましょう。
今回の設定でDocker
の設定を行い、これをベースにクロスコンパイル環境を作ってみようと思います。
以下を参照させていただきましたありがとうございました。
Docker Desktop for Windows
インストールの手順
起動するには以下の手順をおこなっていくことになると思います。以前のWSL
のバージョンを導入していた場合には、Windowsのアップデートを行ったあとに
デフォルトバージョンの変更あたりから作業することになるかなと思います。
Windows 10 May 2020 Update(以降)
を適用Windows Subsystem for Linux (WSL)
を有効化WSL
のデフォルトバージョンをWSL2に設定Docker Desktop for Windows
をインストール
Windows 10 May 2020 Update
(以降)を適用
Windows 10 May 2020 Update
を適用されているか確認を行います。適用されていればwinver
コマンドを実行すると以下のような表示になります。
ここでバージョン 2004、ビルド 19041 より新しいものになっていることを確認します。バージョンが満たない場合にはアップデートを行って
バージョンアップを行います。
ちなみにwinver
コマンドを実行するには【Windows ロゴ キー + R キー】を押下して、ファイル名を指定して実行
のダイアログを開いてwinver
と入力して、【OK】ボタンをクリックすると現在のWindows10のバージョンを表示してくれます。
Windows Subsystem for Linux (WSL) を有効化
該当するバージョンになったら今度はWSLを有効化する処理を行います。
WSL
は仮想マシン プラットフォーム
のコンポーネントを有効にする必要があります。
インストール作業をする前に、管理者として PowerShell のコンソールを開き、以下のコマンドを実行します。
PS > dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart PS > dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
ちなみに管理者として PowerShell
のコンソールを開くには【Windows ロゴ キー + X キー】を押下してメニューを開き、Windows PowerShell(管理者)
をクリックすると実行できます。
実行後にPCの再起動を行います。再起動後にWSLが有効化されます。
WSLのデフォルトバージョンをWSL2
に設定
WSLを有効化することができたのですが、デフォルトではWSLのバージョンは1
のままになっています。
管理者としてPowerShell
で次のコマンドを実行して、新しい Linux ディストリビューションをインストールするときにWSL2を既定のバージョンとして設定します。
PS > wsl --set-default-version 2
実行すると、以下のような表示がでます。これまでみたドキュメントにはない表示です。しかたないのでエラーメッセージで表示されているリンクにいってみます。
以下のリンクになります。
ページ内にあるLinux カーネル更新プログラム パッケージをダウンロードして実行を行います。
ダウンロードファイルを起動すると以下のようなダイアログが表示されるので【Next】ボタンをクリックして
自動的に以下のようなダイアログが表示されて、処理が完了します。【Finish】ボタンをクリックして終了させます。
完了後に先程と同様にバージョン設定の設定を行うと…
PS > wsl --set-default-version 2
表示が先程とメッセージが少し変わったので、正常に設定ができたようです。
Docker Desktop for Windows
をインストール
このままWindows Store
でUbuntu
のディストリビューションをインストールしてみ良いのですが、今回はWSL2
に合わせて使えるようになったDocker Desktop for Windows
を使用してみます。今回使用しているPCのOSはWindows10 Home
なのでこれまではDocker Desktop
が使用できませんでした。(Docker
がHyper-V
を仮想基盤としてしようしていたため)WSL2の導入によってWindows10 Home
でもDocker Desktop
が使用できるようになります。
表現が微妙ですが、Docker
が使えないわけではなありません。公式サイトには以下のように書いてあります。
Requires Microsoft Windows 10 Professional or Enterprise 64-bit. For previous versions get Docker Toolbox.
画面から【Get Docker】ボタンをクリックして、Docker Desktop for Windows
のstableバージョンをダウンロードします。
ダウンロードが完了したら、インストーラを起動します。
起動すると以下のような画面になるので、必ず【Enable WSL 2 Windows Features】のチェックボックスにチェックを入れておきます(デフォルトでチェックが入っているので変更しなければ大丈夫です)【Ok】ボタンを押してインストールを開始します。
インストールが進行し…
以下のように表示されれば、インストール完了です。【Close and log out】ボタンをクリックします。(注意:このボタンをクリックすると問答無用でWindowsのログアウトされるので作業中のアプリは保存してください。)
ログインしなおすと、Docker Desktop
が起動します。チュートリアルなどの画面が表示されますが、それをスキップします。
チュートリアルを終了(完了)したら、PowerShell
で以下のように実行します。
PS > wsl -l -v
するとDocker
側からWSL2
が使用されているのが確認できます。
インストールのバージョンをCLIで調べてみると
あとはDocker
のコンテナを起動してみます。定番のhello-world
のコンテナを実行します。
PS > docker run hello-world
これでDocker
のコンテナを実行できることが確認できました。
おわりに
これまでWindows10 Homeエディション
で使えなかったDocker Desktop
もようやく使用できるようになりました。WSL2
によってDocker
が使用可能になったことで更に仮想化コンテナ実行の裾野がひろがったのではないでしょうか。後日、Ubuntu
のコンテナを導入して、カーネルのクロスコンパイル環境を設定してみようと思います。