はじめに
WindowsでDockerを使用するにあたり、以下のような疑問を持つことがありました。
- WSLのインストールが必要とあるが、それはどこで動作しているのか?
- Ubuntuコンテナを作成できるが、環境構築時にインストールしたUbuntuとは別物なのか?
これらの疑問は、WindowsにおけるDockerの使用はWSLの環境構築が前提となるため、全体像が複雑になりイメージしづらいことが原因だと考えられます。
これは「WindowsでDockerに必要な環境構築を行い、コンテナを動かしている様子」を図にしたものです。
以下では、実際の環境構築手順に沿って、それぞれの操作では上図のどこにあたる部分を整備しているのか紐解き、最終的に先ほどの図を目指す構成で進めます。
対象読者
- WindowsでDockerの環境構築を行いたい方
- 環境構築の手順で、それぞれ何をしているのか知りたい方
- WSLとDockerの関係や、全体像を知りたい方
この記事でやらないこと
- Dockerの概要
- Dockerの操作方法
環境構築手順
前提として、DockerはLinux上でしか動かせないため、WindowsやMacでDockerを使用するには何かしらの方法でLinux環境を用意する必要があります。
仮想化ソフトを使用して用意することもできますが、WindowsではWSL(Windows Subsystem for Linux)を使用する方法が一般的です。
よって、WindowsでDockerを使用するには、大きく2つのステップを踏む必要があります。
- WSLのインストール
- Dockerのインストール
WSLのインストール

WSLのインストールとして必要な手順は以下の4つです。
①仮想マシンの機能を有効にする
②WSLを有効にする
③Linuxカーネルをインストールする
④Linuxディストリビューションをインストールする(任意)
これらは個別にGUIまたはコマンドで設定するか、wsl --install
を実行して①~④まで一度に設定する方法があります。
今回は個別に実行していきます。
①仮想マシンの機能を有効にする
・コントロールパネル > プログラム > Windowsの機能の有効化または無効化
Virtual Machine Platformにチェック
②WSLを有効にする
・コントロールパネル > プログラム > Windowsの機能の有効化または無効化
Linux用Windowsサブシステムにチェック
③Linuxカーネルをインストールする
以下URLより、インストーラをダウンロードし実行
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
これにより、Microsoftが提供するWSL用のLinuxカーネルがインストールされます。
④Linuxディストリビューションをインストールする(任意)
ⅰ) WSL2を既定のバージョンとして設定する
PowerShellを起動し、以下を実行
wsl --set-default-version 2
ⅱ) Linuxディストリビューションをインストールする
Microsoft Storeを開き、任意のディストリビューション(画像はUbuntu)をインストールする
ちなみに、ここでインストールしたUbuntuは、スタートメニューから実行、またはwsl -d Ubuntu
で実行することができます。
Microsoft Storeでインストールできるディストリビューションは、WSL用に提供されたユーザーランドを指します。
Dockerのインストール
Windows用Dockerのインストールとして必要な手順は以下のみです。
①Docker Desktop for Windowsをインストールする
①Docker Desktop for Windowsをインストールする
ⅰ) 以下URLより、インストーラをダウンロード
https://docs.docker.com/desktop/setup/install/windows-install/

ⅱ) インストーラを実行する
特段選択するようなものもなく、ポチポチ進んでOKでした。
(デスクトップにショートカットを作るかのチェックがあるくらい)
インストールしたコンポーネント
本手順にてインストールした各コンポーネントについて、それぞれの役割を簡単に整理します。
docker-desktopユーザーランドがDocker関連のコンポーネントを実行する領域であり、
docker-desktop-dataユーザーランドはイメージやコンテナ、ボリュームなどのデータを格納する領域です。
また、Dockerの実行環境であるDocker Engineですが、中でも中核的な存在であるDockerデーモンが、ユーザーからのリクエストをDocker CLI経由で受け付けて、コンテナやイメージの管理を行います。
コンテナ実行中の様子
ここまでで環境構築が完了したので、最後に実際に動かしている様子を見ていきます。
Dockerを使って何がしたいかと言うと、コンテナと呼ばれる隔離された環境を用意して、その中であれこれしたいわけです。
例えば、以下コマンドを実行すると、nginxコンテナが立ち上がります。
docker run nginx

図にすると、このようにDocker Engine上にコンテナが立ち上がります。
コンテナにはベースイメージと呼ばれる、必要最小限なユーザーランドのようなものが含まれています。

これにより、OSはLinux(Debian)、ミドルウェアとしてnginxを用意した環境が、WSLに内包された形で動いているわけです。
おわりに
WSLやDockerに触れていると、今自分が行っている操作がどこで行われているのか分からなくなることがあります。
本記事が、少しでもイメージを具体化する手助けとなれば幸いです。
動作環境
- Windows11 24H2
- WSL2(2.1.5.0)
- Docker 27.4.0
- Docker Desktop 4.37.1
参考
WSLのインストール