こんにちは、 ebi です。
私物 PC で Windows 10 Home に Insider Preview ビルドを入れて、 Docker Desktop を使えるようにしてみたので軽く紹介しておきます。
サラッと前置き
Docker Desktop for Windows は Hyper-V の利用を前提としており、これまでは Professional エディション以上が必要でした。
ところが新しく提供される WSL2 では、動作のために WSL2 向けの Hyper-V の機能サブセットが Home エディションでも開放され(参考記事)、これを利用することで Docker Desktop も Home で利用できるようになるという話が出てきました。
実際のところ、この対応自体は半年前からお知らせが出ていて、いよいよ WSL2 の機能開放が一般に配布される Windows10 の次期バージョン 2004 が間近で改めてリリースされているのでしょうか?よく分かってない 🤔
とにかく先日の Docker Desktop for Windows Home is here! の案内を皮切りに、今月になって試している方も増えているようです。
①Windows 10 Insider Preview ビルドのインストール
公式の案内 に従っていくだけ。
もちろん、バージョン 2004 の配布以降にこの記事を参照する方には必要ない手順になります。
- Windows Insider Program を開始する。
- プレビュービルドを受け取る頻度は「スロー」を選択しました
- Windows アップデート更新プログラムの確認してからの、ダウンロード、インストール、実際のアップデートまでかなり長いかもしれませんが数回に分けて放置して待ちます。
- バージョン情報を確認すると、OS ビルドが 19040 以上の表示になってます。これで準備は大丈夫そうです
②WSL2 を有効化します
- まずは「Windows の機能の有効化または無効化」設定から、 WSL を有効化するのですが、「Windows Subysytstem for Linux」 が見当たらない……と思ったら「Linux 用 Windows サブシステム」と表示されてました。
ネット上の記事を見ると、「Windows Subysytstem for Linux」で表示されている例が多かったのでここが一番の難関です。あとは余裕です。
(管理者権限でコマンド実行する方法も見かけます。そちらでも大丈夫なはずです。)
- 有効化したら一度再起動が必要です。
- この時点では
wsl
コマンドで実行するディストリビューションが何も入ってないのでインストールを薦められます。案内通り、 Microsoft Store を起動して、 Ubuntu のディストリビューションを入れて動かせるはずです。 wsl2 の利用自体がこの辺の Linux システムを動かすことがセットになっているので、 Ubuntu 等を入れるところまでがセットになっている記事が多いと思います。
ひとまず Docker Desktop を使いたいだけの場合は無視して大丈夫そうだったので無視します。
C:\Users\ebi>wsl -l -v
Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
ディストリビューションは Microsoft Store にアクセスしてインストールすることができます:
https://aka.ms/wslstore
③Docker Desktop for Windows をインストールします
- ここから ダウンロードします。記事執筆時点では、 Edge を選びます。
- インストーラを実行して、またまた再起動を挟みます。
- 起動後、エラーの通知ポップアップが右下に出てました。記載通りの URL にアクセスして指示に従います。
Docker.Core.Backend.BackendException:
Failed to deploy distro docker-desktop to C:\Users\ebi\AppData\Local\Docker\wsl\distro: exit code: -1
中略……
stdout(unicode): WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
- (不要かも)気をとりなおして、再度 Docker Desktop のデスクトップアイコンを実行すると、今度は正常動作したような通知メッセージが右下に表示されました。
- wsl でディストリビューションを確認すると、 docker-desktop が追加されています!
VERSION が 2 と表示されているのが WSL2 を使っている、と言うことのようです。
C:\Users\ebi>wsl -l -v
NAME STATE VERSION
* docker-desktop Running 2
docker-desktop-data Running 2
- hello world できたし多分大丈夫大丈夫
C:\Users\ebi>docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:f9dfddf63636d84ef479d645ab5885156ae030f611a56f3a7ac7f2fdd86d7e4e
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
- ちなみに WSL2 を適用する一環で Hyper-V が適用されることで、 VirtualBox を利用する Docker ToolBox で入れた docker-machine は使えなくなったのですが……
C:\Users\ebi>docker-machine start default
Starting "default"...
(default) Check network to re-create if needed...
Unable to start the VM: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe startvm default --type headless failed:
VBoxManage.exe: error: Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole
Details: 00:00:03.219324 Power up failed (vrc=VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT, rc=E_FAIL (0X80004005))
VirtualBox も Hyper-V 環境での利用に対応始めている動きはあり、 最新の 6.1.14 にアップデートすることでそれらしく動くようにはなりました。
(どう考えてもコンフリクトして悪影響しかなさそうなので、 Docker ToolBox をもう使うことはないでしょうが。移行を考えている方は一応 この辺が参考になるかもです )
これは業務 PC でも怖がらずに Docker Desktop と VirtualBox を共存させる道が見えているのか……?
おわりに
Windows 機での開発に関する話は度々、他の人も記事にしていますが、 WSL2 の登場や VirtualBox の Hyper-V への対応によって、新たな段階に進むのかもしれませんね……!!
落ち着いたら業務 PC でも Docker Desktop for Windows を導入して、改めて自分なりの開発環境構築を模索していければなぁと思います。
また何かの記事でしれっと Windows ならではの情報は発信していくかもです。よろしくお願いします。
おたより発掘
お!Windows 10 Homeでもdockerが使えるようになるのは非常にありがたい
IE、Edgeの実機確認でしか需要はないけど、macだと超絶重たくなってしまうんだよねWindows 10 Home 対応の Docker Desktop for Windows を一足早く試してみました https://t.co/NcYCPymPl5
— たなだい@エンジニアときどきバレエダンサー (@DaigoTanaka0714) March 30, 2020