3.

Docker Desktop の Windows / Linux コンテナ切替方法と注意点(WSL2 / Hyper-V)

編集
この記事の要点
  • Docker Desktop for Windows は Linux コンテナWindows コンテナの 2 モードを持つ
  • 切替方法: タスクトレイの Docker アイコンを右クリック → 「Switch to Windows containers...」 / 「Switch to Linux containers...」
  • Windows コンテナは IIS / .NET Framework / Windows Server 専用機能を動かすときのみ必要
  • 同時起動は不可。切り替えると元モードのコンテナは停止
  • WSL2 backend は Linux コンテナ専用、Windows コンテナは Hyper-V backend 必須
  • 確認: docker version で Server OS が linuxwindows か分かる

Linux / Windows コンテナの違い

項目Linux コンテナWindows コンテナ
ベースイメージalpine / ubuntu / debian 等mcr.microsoft.com/windows/* 系
動かせるアプリnginx / mysql / node / php / python 等IIS / .NET Framework / SQL Server / PowerShell
イメージサイズ数 MB 〜 数百 MB数 GB(windows/servercore は 5GB 超)
backendWSL2 / Hyper-V どちらも可Hyper-V のみ
用途一般的な Web / アプリWindows 専用機能を含むエンタープライズ
共有可能性Linux / Mac でも動くWindows でしか動かない

切替方法(GUI)

  1. タスクトレイの Docker アイコン(クジラ)を右クリック
  2. 表示されるメニューで現在のモードを確認:
    • Linux モードなら「Switch to Windows containers...
    • Windows モードなら「Switch to Linux containers...
  3. クリックすると Docker Desktop が再起動(30 秒〜1 分)
  4. 切替完了後、起動中のコンテナは停止される

切替方法(CLI)

# PowerShell を管理者で起動

# Docker Desktop のインストールディレクトリへ
cd "C:\Program Files\Docker\Docker"

# Windows コンテナへ切替
.\DockerCli.exe -SwitchDaemon

# 確認
docker version
# Server: Docker Desktop
#   Engine:
#     ...
#     OS/Arch:          windows/amd64    ← これが windows / linux

# Linux に戻す場合も同じコマンド(トグル動作)
.\DockerCli.exe -SwitchDaemon

事前準備: Windows コンテナを使うための要件

要件詳細
OSWindows 10/11 Pro/Enterprise/Education(Home は不可)または Windows Server 2016+
Hyper-V有効化必須(コントロールパネル → Windows の機能)
コンテナ機能「コンテナー」を Windows の機能から有効化
仮想化BIOS で VT-x / AMD-V を有効化
Docker Desktop4.0+ 推奨
# PowerShell で Windows 機能を有効化(管理者)
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All

# 再起動
Restart-Computer

Windows コンテナの動作確認

# 切替後、Windows コンテナで hello-world
docker run mcr.microsoft.com/windows/nanoserver:ltsc2022 cmd /c echo Hello from Windows container

# IIS を動かす
docker run -d -p 8080:80 mcr.microsoft.com/windows/servercore/iis
# → http://localhost:8080 で IIS デフォルトページ

# .NET Framework アプリ
docker run mcr.microsoft.com/dotnet/framework/sdk:4.8 powershell Get-Host

Linux に戻すケース(よくある)

Windows コンテナで作業した後、通常の Web 開発に戻るときは Linux モードへ戻します:

# 確認
docker version | findstr OS/Arch

# Linux に戻す
& "C:\Program Files\Docker\Docker\DockerCli.exe" -SwitchDaemon

# 確認: linux/amd64 になっていれば OK
docker version
docker run hello-world

WSL2 backend と Hyper-V backend

backendLinux コンテナWindows コンテナパフォーマンス
WSL2○(推奨)×速い、軽い
Hyper-VWSL2 より遅い

Docker Desktop 設定:

  1. Settings → General → 「Use the WSL 2 based engine」のチェック
  2. WSL2 backend で Windows コンテナを使いたい場合は、いったんチェックを外す(再起動)

よくあるトラブル

症状原因対処
切替メニューが出ないHyper-V / コンテナ機能未有効Windows の機能で有効化、再起動
切替で 5 分以上止まる初回ダウンロード中(数 GB)気長に待つ、ログを %LOCALAPPDATA%\Docker\log で確認
no matching manifest エラーLinux イメージを Windows モードで pull正しいモードへ切替
Windows コンテナで遅いイメージサイズが大きいnanoserver ベースを選ぶ(servercore より軽い)

FAQ

Q: Linux と Windows コンテナを同時に動かしたい
A: 1 つの Docker Desktop では不可。Docker Desktop と Linux 用の別 Docker (WSL2 内で docker-ce 直接) を分けて運用するか、それぞれを別ホストにすることが必要です。

Q: Windows 10 Home でも Windows コンテナを使える?
A: Hyper-V が Home エディションで使えないため 不可。Pro / Enterprise / Education にアップグレードが必要です。

Q: docker compose up のときコンテナの種類は?
A: compose ファイルの image: 行で判断。nginx:alpine なら Linux、mcr.microsoft.com/windows/* なら Windows。1 つの compose で混在不可。

関連項目

  • Docker Desktop: 公式ダウンロード
  • Windows コンテナ イメージ一覧: mcr.microsoft.com
  • WSL2 セットアップ: wsl --install
編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール方法(Windows)
  2. イメージの検索 / 取得 / 取得済み一覧の確認
  3. use windows containers instead of linux containers docker
  4. バージョンの確認
  5. エラー一覧