Windows にて Docker 環境を整える

Docker での開発環境を整える。
ここでは Docker Desktop を使う。

Docker Desktop は条件によっては有料になる ので注意。

環境

  • Windows 10 Home
  • CPU AMD Ryzen 7 3700X 8コア

Docker Desktop をインストールする前にやること

wsl を最新バージョンにする

$ wsl -v
$ wsl --set-default-version 2
$ wsl.exe --update

Window Terminal をインストールする

Microsoft Store からインストールするだけ。

PowerShell をインストールする

Ubuntu をインストールする

仮想化の有効

コンパネの設定
  • 左下「スタート」→「Windows システム ツール」→「コントロールパネル」→「プログラム」→「プログラムと機能:Windows の機能の有効化または無効化」クリック
    • 「Linux 用 Windows サブシステム」にチェック
    • 「仮想マシンプラットフォーム」にチェック
    • 「OK」クリック
BIOS から Hyper-V を有効にする

Windows および Windows Server での Hyper-V のシステム要件 - Microsoft Learn には、

Hyper-V は、次のバージョンの Windows で有効にすることができます。

Windows 10 Pro または Enterprise
Windows 11 Pro または Enterprise

と書いてあるが、
Home でも使えるようになったらしい。

もし Hyper-V がインストールされてなければ Hyper-V をインストールする - Microsoft Learn を参照。

  • 左下「スタート」→「設定」→「更新とセキュリティ」→「回復」→「PC の起動をカスタマイズする」→「今すぐ再起動」クリック。
以下、自分の環境。(BIOS画面はメーカーやモデルによって違うので)
  • 「トラブルシューティング」→「詳細オプション」→「UEFIファームウェアの設定」→「再起動」クリック
    • 「詳細」→「CPU Configuration」→「SVM Mode」を Enabled に設定。
    • 「終了」→「変更を保存しリセット」→「Ok」クリック
以下、TSUKUMO より。
以下、グーグル先生より。

Hyper-V の BIOS 設定は、通常、PC の起動時に特定のキー (例: Esc, F2, Del) を押してBIOS設定画面に入り、「Advanced」や「CPU Configuration」などの項目で「Virtualization Technology」を有効にすることで行います。

詳細:
  1. BIOS へのアクセス:
    PC の電源を入れ、起動時に特定のキー (Esc, F2, Del, F10 など) を連打してBIOS設定画面に入ります。
  2. 仮想化設定:
    BIOS画面内で、「Advanced」や「CPU Configuration」などの項目を探し、そこに「Virtualization Technology」や「SVM Mode」などの設定項目があるはずです。
  3. 設定の変更:
    仮想化関連の設定を「Enabled」または「オン」に変更します。
  4. 保存と再起動:
    設定を保存し、PCを再起動します。
補足:

BIOSの設定画面は、PCのメーカーやモデルによって異なります。
仮想化技術に対応したCPUが必要です。
Hyper-Vを有効にするには、Windowsの機能でHyper-Vを有効にする必要があります。
仮想化機能を有効にすると、Hyper-Vなどの仮想化ソフトウェアが利用できるようになります。

Hyper-V が有効になっているか確認する

確認その1
  • 左下「スタート」→「Windows システム ツール」→「タスクマネージャー」クリック
    • 「パフォーマンス」→「CPU」→「仮想化」が有効になっているか確認する。
      • 有効になっていない場合
        • 仮想化:無効
        • Hyper-V サポート:はい
確認その2
  • 左下検索バーに「msinfo32.exe」と入力し実行。もしくは、左下「スタート」→「Windows 管理ツール」→「システム情報」クリック
    • 項目最下部に「ハイパーバイザーが検出されました。」と書いてあるか確認する。
      • 検出されない場合は項目最下部が下記のような感じになっている
        • Hyper-V - VM モニターモード拡張機能:はい
        • Hyper-V - 第2 レベル アドレス変換拡張機能:はい
        • Hyper-V - ファームウェアで仮想化が有効:いいえ
        • Hyper-V - データ実行防止:はい

Docker Desktop をインストールする

Microsoft Store からのインストールを試してみたけど、
失敗したので、 exe ファイルを普通にダウンロードすることにした。

ダウンロードは Install Docker Desktop on Windows - Docker Docs から。
「Docker Desktop for Windows - x86_64」クリック

インストールが完了すると、
PCの再起動をする必要がある。

システム要件

Windows に Docker Desktop をインストール - Docker-docs-ja を参照。

Docker Desktop の設定変更

  • 「Settings」→「Resource」→「WSL integration」→「Enable integration with my default WSL distro」にチェック
  • 「Ubuntu」をオン
  • 「Apply & restart」クリック

確認

$ docker -v
$ wsl -l -v
  NAME              STATE           VERSION
* docker-desktop    Running         2
  Ubuntu            Running         2

Ubuntu が Running になってなければ、下記記事参考。

エラーが起きた

Docker コマンドは使えるようになったけど、
Docker Desktop で以下エラーが出て Docker が使えない場合。

deploying WSL2 distributions
ensuring main distro is deployed: deploying "docker-desktop": importing WSL distro WSL2 は、現在のマシン構成ではサポートされていません。
"仮想マシン プラットフォーム" オプション コンポーネントを有効にし、さらに、BIOS で仮想化を有効にしてください。
"仮想マシン プラットフォーム" を有効にするには、次のコマンドを実行します: wsl.exe --install --no-distribution
詳細については、https://aka.ms/enablevirtualization をご覧ください
エラー コード: Wsl/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED
output="docker-desktop": exit code: 4294967295: running WSL command wsl.exe C:\WINDOWS\System32\wsl.exe --import docker-desktop <HOME>\AppData\Local\Docker\wsl\main C:\Program Files\Docker\Docker\resources\wsl\wsl-bootstrap.tar --version 2: WSL2 は、現在のマシン構成ではサポートされていません。
"仮想マシン プラットフォーム" オプション コンポーネントを有効にし、さらに、BIOS で仮想化を有効にしてください。
"仮想マシン プラットフォーム" を有効にするには、次のコマンドを実行します: wsl.exe --install --no-distribution
詳細については、https://aka.ms/enablevirtualization をご覧ください
エラー コード: Wsl/Service/RegisterDistro/CreateVm/HCS/HCS_E_HYPERV_NOT_INSTALLED
: exit status 0xffffffff
checking if isocache exists: CreateFile \\wsl$\docker-desktop-data\isocache\: The network name cannot be found.

上部「Docker Desktop をインストールする前にやること:仮想化の有効」の項目を見直す。