TL;DR
前提
以下が Windows に install されている必要があります。
- VirtualBox
- Minikube
- Docker CLI
※ Docker Desktop は不要です! (Home ならどうせ動きませんよね)
実行
PowerShell で以下のように実行します。
minikube start --vm-driver=virtualbox --memory=2048 --cpus=2 --mount
minikube docker-env | Invoke-Expression
memory、cpus などはお好みで。--mount はつけておくと自動で C:\Users を mount してくれて便利です。
これで Windows で docker が使えるようになります。
docker ps
以上です。Hyper-V なんていらなかった。WSL とは何だったのか。もっと早く教えてほしかった。
以下は補足の説明です。
インストール
minikube と docker CLI の install は Chocolatey を使うのが簡単ですが、他の方法でも構いません。VirtualBox は公式サイトから取得して install すればよいです。特別気にする点はありません。
(例)
choco install minikube
choco install docker-cli
気をつけること
手順のとおり、minikube を使いますので Kubernetes cluster が利用可能になります。必要ないかたにとっては無駄でしかありませんが、(今となっては) そこまでリソースを食うものではないので気にしなくてはよいのではと思っています。そのうち使うこともあるかもしれませんし。削除も可能かもしれませんが、調べていません。
minikube start により VM が起動してその上で Docker が動いています。PowerShell などから docker を実行しても、たとえば disk を mount するときなどは VM が参照されるということを意識する必要があります (C:\ とかは見えません)。VM の中を確認するときは、以下のようにして中に入ることができます。
minikube ssh
発展的な使い方
VS Code で Remote extension や Cloud Code と組み合わせて使うことももちろんできます。そのまま VS Code を起動すると minikube の Docker につながらないため、上記で minikube docker-env から設定した環境変数を引き継いで VS Code を起動する必要があります。おなじ PowerShell から以下のように起動するとよいです。
code.cmd
まだ大きな project の build は試していませんが、簡単なものならじゅうぶん使えそうな雰囲気です。ただ VS Code からの利用に関しては他にも注意する点があり、また別に書こうと思います。
macOS でもおなじ!
そしてこの方法、macOS でもおなじです。virtualbox driver で minikube を起動し、同梱された Docker を使います。minikube start のしかたはまったくおなじで、環境変数の設定方法が以下のようにちょっと違うだけです。
eval $(minikube docker-env)
感想 (蛇足)
もともとは Docker を使う環境をつくりたいがために WSL2 を試したりしていたのですが、いっこうに通常の Windows Update に来る気配が無いどころか Insider の Slow ring にすら来ない。また WSL2 も万能ではない、なんなら WSL1 のほうが理想としては高かったようにも感じられ、これなら VirtualBox に Linux 入れればいいじゃないかとかやっぱり Windows では無理なんだろうかなんなら Linux に入れ替えか? とかいっそ Chromebook で Linux というのは現実的なのか? とか悩んでいたのですが、この方法を VS Code の devcontainer と組み合わせて使うことでしばらくの平穏が訪れそうな気がしています。個人的には Kubernetes に deploy するものを debug する環境としても一石二鳥ですし。ひどく回り道をしてしまった気分です。
確認した環境
Dell XPS 13 9343 (2015 年版?) Core i5 2.20GHz memory 8GB
Windows 10 Home Insider Preview Build 19569 (20200229 時点で Fast ring たぶん最新)
VirtualBox 6.0.18 r136238
docker-cli 19.03.3 (Chocolatey)
minikube 1.7.3 (Chocolatey)