WindowsでWSL2とDockerをインストールする方法

Windows PCで開発環境を整えたい初心者向けに、WSL2とDockerのインストール方法を解説します。Windows上でLinux環境を動かすWSL2の導入から、アプリケーション実行環境を簡単に作れるDockerのインストールまでを、コマンド付きで分かりやすく説明します。

作成日: 更新日:

開発環境

  • OS: Windows11
  • Visual Studio Code: 1.73.0

WSL2のインストール

WSL (Windows Subsystem for Linux) は、Windows上でLinux環境を実行するための機能です。これにより、Windowsを使いながらLinuxのコマンドやアプリケーションを利用できるようになります。

WSLをインストール

まず、Windows PowerShellまたはコマンドプロンプトを管理者として実行し、以下のコマンドを入力してWSLをインストールします。

1wsl --install

このコマンドを実行すると、WSLの有効化と、標準のLinuxディストリビューションであるUbuntuのインストールが自動的に行われます。

インストールが完了すると、Ubuntuの初期設定が始まります。Linux環境で使用するユーザー名とパスワードの設定を求められますので、任意のものを設定してください。ここで設定するパスワードは、Windowsのログインパスワードとは異なるものです。

WSLのバージョンを2に設定

WSLにはバージョン1と2があり、バージョン2の方がパフォーマンスが高く機能も豊富です。以下のコマンドで、WSLを最新の状態に更新し、標準バージョンを2に設定します。

まず、WSLのカーネルなどを最新版に更新します。

1wsl --update

次に、今後新しくインストールするLinuxディストリビューションで、自動的にバージョン2が使われるように既定値を設定します。

1wsl --set-default-version 2

動作確認

設定が正しく反映されているかを確認します。 以下のコマンドで、WSLの既定のバージョンが2になっていることを確認できます。

1wsl --status
出力結果
1既定のディストリビューション: Ubuntu
2既定のバージョン: 2

既定のバージョン: 2と表示されていれば、設定は成功です。

次に、インストール済みのLinuxディストリビューション(Ubuntu)のバージョンを確認します。

1wsl -l -v
出力結果
1  NAME      STATE           VERSION
2* Ubuntu    Running         2

UbuntuVERSION2になっていれば、正しく設定されています。STATEStopped(停止中)またはRunning(実行中)のいずれかになりますが、問題ありません。

WSL起動

以下のコマンドで、インストールしたUbuntuを起動します。

1wsl -d Ubuntu

このコマンドを実行すると、Ubuntuのターミナル(コマンドを入力する画面)が表示されます。 次に、以下のコマンドをUbuntuのターミナル内で実行し、OSのバージョン情報を確認します。

1lsb_release -a
出力結果
1No LSB modules are available.
2Distributor ID: Ubuntu
3Description:    Ubuntu 24.04.3 LTS
4Release:        24.04
5Codename:       noble

このように、インストールされているUbuntuの詳細情報が表示されます。

パッケージの更新

最後に、Ubuntuにインストールされているソフトウェアのリストを最新の状態に更新します。これは、新しいアプリケーションをインストールする前の準備として重要な作業です。

aptはUbuntuでソフトウェアを管理するためのコマンドです。sudoは、管理者権限でコマンドを実行するために必要で、実行時にパスワードを求められることがあります。

1sudo apt-get update

これで、WSL2とUbuntuの基本的なセットアップは完了です。

Dockerのインストール

このセクションでは、Linuxディストリビューションの一つであるUbuntuにDockerをインストールする手順を解説します。コマンドを一つずつ実行していくことで、お使いの環境でDockerが利用できるようになります。

Dockerに必要なパッケージ

まず、Dockerのインストールに先立って、必要となる基本的なソフトウェア(パッケージ)をインストールします。これらは、安全な通信を行ったり、ファイルをダウンロードしたり、デジタル署名を扱ったりするために使われます。

1sudo apt install -y ca-certificates curl gnupg

aptはUbuntuでソフトウェアを管理するためのコマンドです。このコマンドにより、Docker公式の情報を安全に受け取るための準備が整います。

Docker の GPG キーを登録

次に、これからインストールするDockerが、間違いなく公式から配布された本物であることを保証するための「GPGキー」という電子署名をシステムに登録します。これにより、不正なソフトウェアのインストールを防ぎます。

1sudo mkdir -m 0755 -p /etc/apt/keyrings
2curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

上記のコマンドは2つのステップで実行されます。

  1. mkdirコマンドで、GPGキーを保管するための専用のディレクトリ(フォルダ)を作成します。
  2. curlコマンドでDockerの公式サイトからGPGキーをダウンロードし、gpgコマンドで適切な形式に変換して、先ほど作成したディレクトリ内に保存します。

権限の設定

先ほど保存したGPGキーのファイルに対して、システムが正しく読み取れるように権限を設定します。

1sudo chmod a+r /etc/apt/keyrings/docker.gpg

この設定により、aptコマンドがDockerの電子署名を検証できるようになります。

Dockerリポジトリ設定

次に、aptコマンドがDockerをどこからダウンロードすればよいか、その場所(リポジトリ)をシステムに教えます。

1echo \
2"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
3https://download.docker.com/linux/ubuntu \
4$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
5sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

このコマンドは、Docker公式リポジトリの情報を記載した設定ファイル/etc/apt/sources.list.d/docker.listを新規に作成します。

状態確認

設定ファイルが正しく作成されたかを確認します。

1cat /etc/apt/sources.list.d/docker.list

catコマンドはファイルの中身を表示するコマンドです。以下のような内容が表示されていれば、設定は成功です。

出力結果
1deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable

追加情報を利用するために再度更新

新しいリポジトリ(Docker公式リポジトリ)をシステムに追加したため、そのリポジトリからインストールできるソフトウェアの一覧情報を取得し直す必要があります。

1sudo apt-get update

このコマンドを実行することで、aptがDockerを認識できるようになります。

dockerエンジンのインストール

準備が整いましたので、いよいよDocker本体(Docker Engine)と、関連ツールをインストールします。

1sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

このコマンド一つで、Dockerの実行に必要なソフトウェアが一括でインストールされます。

動作確認

最後に、Dockerが正しくインストールされ、正常に動作するかを確認します。

まず、現在実行中のDockerコンテナがないことを確認します。インストール直後は何も動いていないのが正常な状態です。

1sudo docker ps

下記のように、項目の見出しだけが表示されれば問題ありません。

出力結果
1CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

次に、インストールされたDockerのバージョンを確認します。

1sudo docker --version

バージョン情報が表示されれば、コマンドが正しくインストールされています。

出力結果
1Docker version 29.1.2, build 890dcca

最後に、簡単なテスト用のコンテナを実行してみましょう。hello-worldは、Dockerの動作確認のために公式から提供されているイメージです。

1sudo docker run hello-world

このコマンドを実行すると、以下のようなメッセージが表示されます。これは、Dockerのインストールと実行が成功したことを意味します。

出力結果
1Unable to find image 'hello-world:latest' locally
2latest: Pulling from library/hello-world
317eec7bbc9d7: Pull complete
4ea52d2000f90: Download complete                                                                                                                                
5Digest: sha256:f7931603f70e13dbd844253370742c4fc4202d290c80442b2e68706d8f33ce26
6Status: Downloaded newer image for hello-world:latest
7
8Hello from Docker!
9This message shows that your installation appears to be working correctly.
10
11To generate this message, Docker took the following steps:
12 1. The Docker client contacted the Docker daemon.
13 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
14    (amd64)
15 3. The Docker daemon created a new container from that image which runs the
16    executable that produces the output you are currently reading.
17 4. The Docker daemon streamed that output to the Docker client, which sent it
18    to your terminal.
19
20To try something more ambitious, you can run an Ubuntu container with:
21 $ docker run -it ubuntu bash
22
23Share images, automate workflows, and more with a free Docker ID:
24 https://hub.docker.com/
25
26For more examples and ideas, visit:
27 https://docs.docker.com/get-started/
28
29ishikawa@ishikawa:/mnt/c/Users/石川慎吾/Documents/development$ 

出力メッセージにある通り、Dockerは以下の手順で動作しました。

  1. あなたのPC(クライアント)からDockerの本体(デーモン)に接続しました。
  2. hello-worldというイメージがPC内に無かったため、インターネット上の保管場所(Docker Hub)からダウンロードしました。
  3. ダウンロードしたイメージをもとに新しいコンテナを作成し、実行しました。
  4. コンテナが実行した結果のメッセージをあなたの画面に表示しました。

「Hello from Docker!」というメッセージが表示されれば、インストール作業はすべて完了です。

sudoなしでDockerを使えるようにする

Dockerコマンドは、システムの重要な部分を操作するため、通常は管理者権han(sudo)を付けて実行する必要があります。 しかし、毎回sudoを入力するのは手間がかかります。そこで、現在ログインしているユーザーをdockerというグループに所属させることで、sudoを省略してDockerコマンドを実行できるように設定します。

以下のコマンドは、現在ログインしているあなた自身($USER)を、dockerグループに追加(-aG)するためのものです。

1sudo usermod -aG docker $USER

ユーザーのグループ情報を変更した場合、その設定をシステムに反映させるためには、一度セッションを再起動する必要があります。WSLの場合は、WSL自体を再起動することで変更が有効になります。

その後、WSLを再起動してください。

まず、以下のコマンドを実行して、現在起動しているWSLを完全に停止させます。

1wsl --shutdown

次に、以下のコマンドでWSLを再度起動します。この例ではUbuntuという名前のディストリビューションを起動していますが、ご自身の環境に合わせて名前を指定してください。この操作で再起動が完了し、設定が反映されます。

1wsl -d Ubuntu

PC再起動時の対応

PCを再起動すると、Dockerのようなソフトウェアが自動的に起動しない場合があります。その際は、これから説明するコマンドを使って、手動で状態の確認と起動を行う必要があります。

最初に、現在のDockerの状態を確認するために以下のコマンドを実行します。 sudoは管理者権限でコマンドを実行するという意味で、システムに関する操作で必要になります。service docker statusは「Dockerというサービスの状態(status)を表示してください」という命令です。

1sudo service docker status

もしDockerが停止していた場合は、次のコマンドで起動させます。 startは、指定したサービスを開始するための命令です。

1sudo service docker start

Dockerを起動した後、正常に動作しているかを確認するため、もう一度状態を確認するコマンドを実行します。

1sudo service docker status

コマンドを実行すると、以下のような結果が出力されます。

出力結果
1● docker.service - Docker Application Container Engine
2     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
3     Active: active (running) since Thu 2025-12-04 09:33:01 JST; 3min 40s ago
4TriggeredBy: ● docker.socket
5       Docs: https://docs.docker.com
6   Main PID: 7204 (dockerd)
7      Tasks: 18
8     Memory: 39.2M (peak: 40.2M)
9        CPU: 1.107s
10     CGroup: /system.slice/docker.service
11             └─7204 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

この出力結果の中で特に重要なのは、Active:という項目です。ここに緑色の文字でactive (running)と表示されていれば、Dockerサービスが正常に起動し、現在動作中であることを示しています。この状態になれば、Dockerを利用する準備が完了です。

Dockerの自動起動設定

ここでは、WSL (Windows Subsystem for Linux) を起動した際に、Dockerも自動で起動するように設定する方法を解説します。

まず、WSLの設定ファイルである /etc/wsl.conf の内容を確認します。このファイルはWSLの起動時の動作を制御します。sudoは管理者権限でコマンドを実行するという意味で、catはファイルの内容を表示するコマンドです。

1sudo cat /etc/wsl.conf

以下のような内容が表示されます。

出力結果
1[boot]
2systemd=true
3
4[user]
5default=ishikawa

出力結果の [boot] セクションにある systemd=true という設定が重要です。systemd は、Linuxのシステムやサービスを管理するための仕組みです。この設定を有効にすることで、DockerのようなサービスをWSLの起動と同時に自動で立ち上げることが可能になります。

もし、お使いの環境でこの設定がされていない場合は、/etc/wsl.conf ファイルを編集し、以下の内容を追記または修正してください。

1[boot]
2systemd=true

設定ファイルを変更した後は、その内容を反映させるためにWSLを再起動する必要があります。まず、以下のコマンドで現在実行中のWSLを完全に停止させます。

1wsl --shutdown

次に、利用しているWSLディストリビューション(この例ではUbuntu)を再度起動します。

1wsl -d Ubuntu

WSLが再起動したら、最後にDockerサービスが自動で起動しているかを確認します。systemctlsystemd で管理されているサービスの状態を確認したり、操作したりするためのコマンドです。

1systemctl status docker

以下のような結果が表示されれば設定は成功です。

出力結果
1● docker.service - Docker Application Container Engine
2     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
3     Active: active (running) since Thu 2025-12-04 09:33:01 JST; 3min 40s ago
4TriggeredBy: ● docker.socket
5       Docs: https://docs.docker.com
6   Main PID: 7204 (dockerd)
7      Tasks: 18
8     Memory: 39.2M (peak: 40.2M)
9        CPU: 1.107s
10     CGroup: /system.slice/docker.service
11             └─7204 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

注目すべきは Active: active (running) の部分です。これが表示されていれば、Dockerがバックグラウンドで正常に動作していることを示します。また、Loaded: の行にある enabled は、システム起動時にDockerが自動起動するよう設定されていることを意味します。

おわりに

この記事では、wsl --installコマンドでWindowsにLinux環境を構築し、Dockerをインストールする手順を解説しました。Ubuntu上でDocker公式リポジトリを設定し、aptコマンドで安全にインストールする方法を学びました。最後にhello-worldコンテナを実行して動作を確認し、sudoなしでDockerを扱えるように設定したことで、快適な開発環境の準備が完了しました。

関連コンテンツ

関連IT用語