最近、業務用端末が物理PCから仮想マシン上のWindows11に切り替わったんですが、Docker Desktopをそのままインストールしようとして、思いっきりハマりました。
「仮想Windows11でも同じように使えるでしょ」と思っていたら……実はそう簡単じゃなかったのです。
- Docker Desktopを入れただけでは動かなかった
- Hyper-Vモードを使おうとしても、うまくいかない
- 原因は「ネストされた仮想化」が無効だったこと
- まとめ:仮想WindowsでDockerを使うなら、ネストされた仮想化の確認を!
- 最後に
Docker Desktopを入れただけでは動かなかった
Docker Desktopを公式サイトからダウンロードして、インストール。
そこまでは普通に進んだのですが、起動してみると、こんなエラーが。
Unexpected WSL error
さらに、CLIから `docker info` を叩いてもこんなエラーが。
docker info ERROR: error during connect: this error may indicate that the docker daemon is not running: open //./pipe/docker_engine: The system cannot find the file specified.
この時点で「何かおかしいな」と思って、`Start-Service docker` を試したり、サービス一覧を確認したりするも、Dockerのサービスそのものが見つかりません。
Hyper-Vモードを使おうとしても、うまくいかない
インストール時に、次のようなオプションが表示されます。
Use WSL 2 instead of Hyper-V (recommended)
「Hyper-Vなら仮想化ソリューションだから、WSL2がなくてもいけるのでは?」と思い、チェックを外してインストールしてみたのですが…
Docker Desktop の設定画面にあるべき「Enable the Windows features required for Hyper-V」が見当たらない。
さらに `systeminfo` を見てみると:
Hyper-V の要件: ハイパーバイザーが検出されました。Hyper-V に必要な機能は表示されません。
これは「仮想環境上ではHyper-Vをさらに有効にできませんよ」という状態です。
要するに、Hyper-Vも使えない。WSL2も未導入。Docker Engineが起動しないのも当然という状況でした。
原因は「ネストされた仮想化」が無効だったこと
ここまで調べてようやく気づきました。
このWindows11は仮想環境で動いていて、さらにDockerも仮想化を使う=ネストされた仮想化が必要 ということ。
ネストされた仮想化がホスト側で有効化されていなければ、Hyper-VもWSL2もまともに動きません。
つまり、「仮想の中でさらに仮想が使える設定」になっている必要があるのです。
ホスト側の仮想化ソリューションで「ネストされた仮想化を許可する」設定を入れてもらい、再起動。
その後、WSL2ベースでのDocker Desktop に切り替えたところ、無事に動作しました。
WSL2のインストールには制約あり
ちなみに、うちの環境では `wsl --install` が使えなかったため、
WSL2 のバイナリを手動でダウンロードしてインストールしました。
これは一部制限があるネットワーク環境や社内ルール下ではよくある話かもしれません。
(この話はまた次の機会に書きます。)
まとめ:仮想WindowsでDockerを使うなら、ネストされた仮想化の確認を!
物理PCでDockerが使えていたからといって、仮想マシンでも同じように動くとは限りません。
Docker Desktop は WSL2 か Hyper-V を必要としますが、仮想Windows上ではその両方が制限されることがあります。
特に、ネストされた仮想化が有効になっているかどうかが最大のポイントです。
対処のポイントまとめ
- 仮想環境上のWindowsでDocker Desktopを動かすには「ネストされた仮想化」が必要
- `systeminfo` で Hyper-V の状態を確認する
- Hyper-Vが使えない場合は、WSL2ベースのDockerに切り替える
- WSL2は手動インストールも可能(`wsl --install`が使えない環境でもOK)
- `docker info` でエンジンが動いているか確認できる
最後に
物理環境と仮想環境では、同じWindowsでも裏で動いている仕組みが違います。
「なぜ動かないのか」とハマった時は、Hyper-VやWSLの仮想化機能が正しく動いているかを疑ってみてください。
この記事が、同じような環境でDocker Desktopのセットアップに悩む誰かの助けになれば幸いです。
参考: