2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS EC2(Windows Server)にWSL2 + Docker Desktopをセットアップする【Nested Virtualization対応】

2
Posted at

はじめに

以前、DifyでInterSystems IRISをベクトルDBとして使ってみる【環境構築編】という記事を書きました。

この記事を書いた後、修正や機能拡張のPRをいくつか続けて出すなかで、Windows環境での動作確認が後回しになっていました。そんな折、「Windowsで試してみたけど、うまく動かないよ」という連絡をもらいました。

原因と対処方法についても教えてもらいましたが、IssueやPRを出す前に実際に自分の目で確認しておきたいと思い、Windows環境を用意することにしました。ところが手元にWindowsマシンがない。

実はこれより前にも、EC2のWindows ServerにDocker環境を構築しようとしたことがありました。そのときDocker DesktopはWSL2に依存しているため、まずWSL2を有効化しようとしたのですが——うまく動かない。調べてみると、EC2の通常インスタンスはNested Virtualizationに対応していないためWSL2が動かないという情報にたどり着きました。ベアメタルインスタンスなら動くとのことでしたが、ちょっとした確認のために使う価格帯ではなく、断念していました。

今回また同じ壁にぶつかるかと思いながら改めて調べてみたところ、2026年2月にAWSが通常インスタンスでのNested Virtualizationに対応したという情報を見つけました。

「あのときの問題が解消されてる」と思い、動作確認ついでにまとめることにしました。

なお、私はMacユーザーなのでWindows固有の操作や設定まわりは不慣れな部分がありますし、記事には盛大な勘違いが含まれているかもしれませんが、「ここ違う」という点があればコメントで教えてもらえると助かります🙏

Nested Virtualizationの対応で何が変わったか

これまでできなかったこと

WSL2やDocker Desktopは、内部でHyper-V(Windowsのハイパーバイザー)を使って動作します。
ハイパーバイザーの上でさらにハイパーバイザーを動かすのがNested Virtualization(ネスト仮想化)です。

通常のEC2インスタンスは、CPUの仮想化拡張命令(Intel VT-x)をゲストOSに渡さない仕組みになっています。そのため、EC2の通常インスタンス上ではWSL2もDocker Desktopも動きませんでした。

【これまで】通常インスタンスでは動かない

物理サーバー(AWS Nitro)
  └── EC2インスタンス(Windows Server)
        └── WSL2 / Hyper-V  ← CPUの仮想化命令が渡されないため起動できない ❌

回避策はベアメタルインスタンスを使うことでしたが、m5.metalで1時間あたり10.368ドル(1600円ぐらい!?)(東京リージョン)ほどする価格帯は、ちょっとした動作確認に使うには気が引けます。

対応後にできること

2026年2月、C8i・M8i・R8i でCPUの仮想化拡張命令がゲストOSに渡されるようになりました。Intel Xeon 6のCPU拡張機能(Intel TDX)を活かした対応で、追加コストはありません。

【対応後】C8i / M8i / R8iなら動く

物理サーバー(AWS Nitro)
  └── EC2インスタンス(Windows Server)     ← L1
        └── WSL2 / Hyper-V                  ← L2(Nested Virtualization)✅
              └── Ubuntu / Dockerコンテナ   ← L3

ベアメタルなしで、通常インスタンスのままWSL2・Docker Desktop・Androidエミュレーターなどが使えるようになりました。

手元にWindowsマシンがない場合の動作確認や、クラウド上でWindows開発環境を構築したいケースで活用できます。

環境

  • インスタンスタイプ:m8i.2xlarge(8vCPU / 16GB) 1時間あたり0.84ドル(130円ぐらい)
  • OS:Windows Server 2025 Base
  • リージョン:ap-northeast-1(東京)
  • ストレージ:デフォルトの30GBから60GBに増加

この後に説明されているDocker Desktopなどをインストールするだけでデフォルトの30GBではカツカツになってしまいますので、デフォルトの倍の60GBに変更しています。

手順

1. EC2インスタンスの起動

マネジメントコンソールから通常の手順でインスタンスを起動します。

ポイントはインスタンスタイプをC8i・M8i・R8iのいずれかにすることです。m5やc5では、この後のWSL2のインストールでエラーになります。

また、ネストされた仮想化有効にすることも忘れずに📝

スクリーンショット 2026-02-19 16.32.09.png

OSはWindows Server 2025を選択しました。

2. WSL2のインストール

MacからRDPでEC2(Windows Server)に接続後、画面下部のWindowsアイコンをクリックしてTerminalを開きます。

スクリーンショット 2026-02-19 16.40.08.png

wsl --install を実行してWSL2のインストールを開始します。

スクリーンショット 2026-02-19 17.11.53.png

しばらく待つと、インストール完了と再起動が必要なことを示すメッセージが表示されます。Windowsを再起動してください。

旧世代インスタンス(m5など)では、ここで以下のエラーが出て先に進めません。m8iでは何もしなくても通過できます。

Please enable the Virtual Machine Platform Windows feature
and ensure virtualization is enabled in the BIOS.

再起動後にログインできたら、再びTerminalで同じく wsl --install を実行します。

同じコマンドを再起動を挟んで2度実行することに少し違和感がありますが、それぞれ以下の処理が行われているようです。

実行タイミング 処理内容
1回目(再起動前) WSL2カーネルのインストール
2回目(再起動後) Linuxディストリビューション(Ubuntu)のインストール

しばらくするとUbuntuのアカウント設定プロンプトが現れるので、アカウント名とパスワードを入力します。

スクリーンショット 2026-02-20 16.49.01.png

設定後、Ubuntuを最新化するために apt updateapt upgrade を実行します。

スクリーンショット 2026-02-20 16.51.34.png

3. Docker Desktop for Windowsのインストール

ブラウザでDocker Desktop for Windowsをダウンロードします。

参考リンク:Docker Desktop for Windows インストールガイド

スクリーンショット 2026-02-19 15.27.42.png

ダウンロードしたファイルを実行し、インストールウィザードはすべてデフォルトで進めます。

インストール完了後、「Close and restart」ボタンをクリックするとWindowsが自動的に再起動します。

スクリーンショット 2026-02-19 17.33.56.png

4. WSL Integration の有効化

再起動後、デスクトップのDocker Desktopアイコンをダブルクリックして起動します。画面上部の歯車アイコンからSettingsを開き、Resources → WSL integration の画面で「Enable integration with additional distros:」の下にあるUbuntuのスライダーを右にずらして有効にします。

スクリーンショット 2026-02-20 16.53.45.png

「Apply & restart」をクリックすると、UbuntuからDockerが利用できるようになります。

5. 動作確認

Terminal(Ubuntu)からDockerコマンドを実行し、正常に動作することを確認してください。

今回はDockerの動作確認として、DifyのIRIS連携の検証も合わせて実施しました。詳細はDifyでInterSystems IRISをベクトルDBとして使ってみる【環境構築編】を参照してください。

なお、Windows環境特有の問題として、docker compose up -d を実行してもIRISが起動せずリセットが繰り返される現象がありました。dify/docker/volumes/irischmod 777 を実行することで解消できます(近日中に公式リポジトリへPRを出す予定です)。

トラブルシューティング

WSL2のインストールが失敗する

インスタンスタイプを確認してください。C8i・M8i・R8i以外のインスタンスタイプでは動作しません。

まとめ

  • これまで: EC2の通常インスタンスではWSL2・Docker Desktopが動かなかった。回避策はベアメタルインスタンス一択だった
  • 対応後: C8i・M8i・R8iなら安価にWSL2やDocker Desktopが動く。
  • 手元にWindowsマシンがなくても、クラウド上でWindows+Docker環境を手軽に用意できる

「ここで詰まった」などあればコメントで気軽にどうぞ💬

参考リンク


※この記事は個人の見解であり、所属組織の公式見解ではありません。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?