0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker Desktop for Windows 入門:仕組みと構築方法

0
Last updated at Posted at 2026-02-12

はじめに

Windows で Docker を使うと、なぜ Linux コンテナが動くのか
この記事では、Docker Desktop for Windows の内部構造を解説し、実際にDocker Desktopのセットアップ、nginx コンテナを使って Web サイトを公開するまでの流れを紹介します

この記事で分かること

  • Docker Desktop for Windows が Linux カーネルを使う仕組み
  • WSL2 の役割と内部構造
  • Docker Desktop のインストール手順
  • nginx コンテナを使った Web サイト公開の実践

Windows で Docker を使うと、なぜ Linux コンテナが動くのか

結論:Linux カーネルは含まれている

Docker Desktop for Windows には Linux カーネルが含まれています

ただし、それは Windows カーネルとは別に、WSL2(Windows Subsystem for Linux 2) の中で動作する軽量仮想マシンの一部として存在します

全体構造

[物理マシン]
│
├─ [Windows 10/11 カーネル]
│   └─ WSL2(軽量VM)を管理
│
└─ [WSL2 環境]
    ├─ Linux カーネル(Microsoft 提供)
    ├─ docker-desktop(Docker Engine 実行環境)
    ├─ docker-desktop-data(イメージ・ボリューム保存)
    └─ Ubuntu / Alpine などの Linux ディストリビューション

つまり、Windows 上で docker run ubuntu を実行すると、内部的には WSL2 の Linux カーネル上でコンテナが動いている のです

WSL2 の Linux カーネル

WSL2 は 本物の Linux カーネル をマイクロ VM 上で実行しています

このカーネルは Microsoft が独自にビルド・署名しており、Windows Update で自動更新されます

カーネルバージョンの確認方法

wsl --status

出力例:

Default Version: 2
Kernel version: 5.15.153.1-microsoft-standard-WSL2

これが Docker Desktop が利用している 実際の Linux カーネル です
※wslのインストール(wsl --install)が必要

Docker Desktop の内部構成

コンポーネント一覧

コンポーネント 役割
docker-desktop Docker Engine (Linux版) を実行する WSL2 環境
docker-desktop-data イメージ・ボリューム・設定データを保存
Windows Docker CLI docker.exe コマンドを Windows 上から実行。内部的には WSL2 の Docker Engine にリクエストを送る

実行フロー

[Windows PowerShell]
    ↓ docker run ubuntu
[docker.exe (Windows CLI)]
    ↓ API リクエスト
[Docker Engine (WSL2 内の Linux)]
    ↓ コンテナ起動
[Linux カーネル (WSL2)]
    ↓ namespace, cgroup で隔離
[Ubuntu コンテナ実行]

WSL1 と WSL2 の違い

バージョン 動作方式 Linux カーネル Docker 対応
WSL1 Linux API を Windows カーネルでエミュレート なし 非対応
WSL2 本物の Linux カーネルを VM 内で起動 あり 対応(推奨)

Docker Desktop のインストール

前提条件

  • Windows 10 バージョン 2004 以降、または Windows 11
  • BIOS で仮想化が有効になっていること
  • 管理者権限

インストール手順

1. インストーラーのダウンロード

Docker Desktop 公式サイト から Windows 版をダウンロードします。

2. インストール実行

  1. ダウンロードした Docker Desktop Installer.exe を実行
  2. 「Use WSL 2 instead of Hyper-V」にチェックが入っていることを確認
  3. 「OK」をクリックしてインストール開始
  4. インストール完了後、再起動を求められたら再起動

3. Docker Desktop の起動

  1. スタートメニューから「Docker Desktop」を起動
  2. 初回起動時、利用規約に同意
  3. タスクバーに Docker アイコン(🐳)が表示され、「Docker Desktop is running」となれば成功

参考:KAGOYA 公式ガイド

PATH の確認

Docker のバイナリは以下に配置されます:

C:\Program Files\Docker\Docker\resources\bin

通常、インストール時に自動的に PATH が設定されます

動作確認

PowerShell または VSCode のターミナルで以下を実行:

# Docker のバージョン確認
docker --version

正常に動作すると、以下のようなメッセージが表示されます:

Docker version 28.5.1, build e180ab8

Linux カーネルの実体

カーネルファイルの場所

デフォルトでは以下に格納されています:

C:\Windows\system32\lxss\tools\kernel

カスタムカーネルの指定

独自ビルドの Linux カーネルを使用する場合、.wslconfig で指定できます

ファイル: C:\Users\<ユーザー名>\.wslconfig

[wsl2]
kernel=C:\\custom\\path\\vmlinux
memory=4GB
processors=2

設定後、WSL2 を再起動:

wsl --shutdown

Windows コンテナモードとの違い

Docker Desktop には 2つのモード があります

モード 動作カーネル コンテナの種類 主な用途
Linux コンテナモード(デフォルト) WSL2 の Linux カーネル nginx, mysql, ubuntu など 一般的な開発環境
Windows コンテナモード Windows カーネル Windows Server Core / Nano Server .NET Framework アプリなど

モード切り替え方法

  1. タスクバーの Docker アイコン(🐳)を右クリック
  2. 「Switch to Windows containers」を選択
  3. 再度切り替えで「Switch to Linux containers」

なぜ Linux カーネルが必要なのか?

Docker コンテナは以下の Linux カーネル機能 に依存しています:

  • namespace: プロセス・ネットワーク・ファイルシステムの隔離
  • cgroup: CPU・メモリなどのリソース制限
  • overlayfs: レイヤー型ファイルシステム

これらは Windows カーネルには存在しないため、WSL2 の Linux カーネル が必要になります。

実践:nginx コンテナで Web サイトを公開

ここからは、実際に Docker Hub から nginx イメージを取得し、Web サイトを公開する手順を解説します

1. nginx イメージの取得

Docker Hub から公式の nginx イメージをダウンロードします

docker pull nginx

ダウンロード状況が表示され、完了すると以下で確認できます

docker images

出力例:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    a72860cb95fd   2 weeks ago    188MB

2. nginx コンテナの起動

nginx コンテナを起動し、ポート 8080 で公開します

docker run -d -p 8080:80 --name my-nginx nginx

オプションの意味

  • -d: バックグラウンドで実行(デタッチモード)
  • -p 8080:80: ホストの 8080 ポートをコンテナの 80 ポートにマッピング
  • --name my-nginx: コンテナに名前を付ける
  • nginx: 使用するイメージ名

3. 動作確認

ブラウザで以下にアクセス

http://localhost:8080

次のようにnginx のデフォルトページ「Welcome to nginx!」が表示されれば成功です

image.png

4. カスタム HTML の配置

独自の HTML ファイルを表示させる方法を2つ紹介します

方法1:ボリュームマウント

ホストの HTML ファイルをコンテナにマウントします

# 作業ディレクトリを作成
mkdir C:\docker-nginx
cd C:\docker-nginx

# index.html を作成
echo "<h1>Hello from Docker!</h1>" > index.html

# コンテナを起動(ボリュームマウント)
docker run -d -p 8080:80 --name my-nginx -v C:\docker-nginx:/usr/share/nginx/html nginx

※コンテナ起動中であれば停止後、削除すること 
docker stop my-nginx
docker rm my-nginx

方法2:実行中のコンテナにファイルをコピー

# HTML ファイルを作成
echo "<h1>Hello from Docker!</h1>" > index.html

# 実行中のコンテナにコピー
docker cp index.html my-nginx:/usr/share/nginx/html/index.html

# nginx をリロード(必要に応じて)
docker exec my-nginx nginx -s reload

ブラウザをリロードすると、次のようにカスタム HTML が表示されます

image.png

5. コンテナの管理

コンテナの一覧表示

docker ps

コンテナの停止

docker stop my-nginx

コンテナの再起動

docker start my-nginx

コンテナの削除

# 停止してから削除
docker stop my-nginx
docker rm my-nginx

イメージの削除

docker rmi nginx

6. ログの確認

コンテナのログを確認する方法

# 全ログを表示
docker logs my-nginx

# リアルタイムでログを表示
docker logs -f my-nginx

まとめ

  • Docker Desktop for Windows は WSL2 上の Linux カーネル を使用
  • Windows カーネルとは別に、本物の Linux カーネル が動いている
  • Linux コンテナは WSL2 の Linux カーネル上 で実行される
  • Windows コンテナモードに切り替えると Windows カーネル を使用

トラブルシューティング

Docker が起動しない

# WSL2 が有効か確認
wsl --status

# WSL2 を再起動
wsl --shutdown

WSL2 が無効になっている

# WSL を有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 仮想マシンプラットフォームを有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# 再起動後、WSL2 をデフォルトに設定
wsl --set-default-version 2

Docker コマンドが見つからない

PATH が通っているか確認

$env:Path -split ';' | Select-String docker

通っていない場合、以下を追加

C:\Program Files\Docker\Docker\resources\bin

次のステップ

Docker Compose で WordPress 環境を構築する方法【複数コンテナ構成】

参考リンク

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?