Windows 11でWSLを使ってDockerとDocker Composeをセットアップする方法

Windows 11にWSL（Windows Subsystem for Linux）をインストールし、その上でDockerとDocker Composeを設定する手順を詳細に説明します。Windows上でLinux環境を動かし、Dockerを利用することで、開発の柔軟性と効率を大幅に向上させることができます。

## 前提条件

- Windows 11がインストールされていること
- 管理者権限を持つユーザーであること

## 1.「Hyper-V」、「Linux 用 Windows サブシステム」、および「仮想マシンプラットフォーム」を有効化

-  **PowerShellを管理者として開く**: スタートメニューで「PowerShell」と検索し、右クリックから「管理者として実行」を選択します。

-  **機能を有効にするコマンドを実行する**:

以下のコマンドをPowerShellに貼り付けて実行します。これにより、必要な機能が有効になります。

```powershell
# Hyper-Vを有効にする
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

# Linux 用 Windows サブシステムを有効にする
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

# 仮想マシンプラットフォームを有効にする
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
```

これらのコマンドは、各機能をオンラインで有効にします。`-All`オプションは、Hyper-Vに関連するすべての必須機能コンポーネントを有効にするために使用されます。

-  **システムの再起動**:

上記のコマンドを実行した後、変更を適用するためにシステムを再起動する必要があります。PowerShellから以下のコマンドを実行して再起動します。

```powershell
Restart-Computer
```

これで、「Windowsの機能の有効化または無効化」で「Hyper-V」、「Linux 用 Windows サブシステム」、および「仮想マシンプラットフォーム」が有効になり、システムが再起動されます。これにより、WSLのインストールや仮想マシンの利用など、さまざまな高度な機能を使用する準備が整います。


## 2. WSLの有効化とインストール

WSLとは、Windows上でLinuxバイナリエグゼキュータブルをネイティブに実行することができる互換レイヤです。WSLを有効にしてインストールするには、以下の手順に従ってください。

-  **スタートメニュー**を開き、**PowerShell**を管理者権限で実行します。
-  次のコマンドを入力して実行し、WSLを有効にします。

```powershell
wsl --install -d Ubuntu-22.04
```
このコマンドは、WSLを有効にし、必要なLinuxカーネルコンポーネントをインストールし、Linuxディストリビューション（Ubuntu-22.04）をダウンロードします。


## 3. Linuxディストリビューションのセットアップ

インストールが完了したら、スタートメニューからLinuxディストリビューションを起動し、初回起動時にユーザー名とパスワードを設定します。

WSL上のUbuntu 22.04で初回起動時に行っておくと良い設定や作業はいくつかあります。これらは、将来的な作業の効率化、セキュリティの向上、およびシステムの最適化に役立ちます。以下に主なものをリストアップします。

-  システムの更新

最初に行うべきは、パッケージリストとインストール済みパッケージの更新です。これにより、セキュリティ修正やバグ修正を含む最新の状態に保てます。

```bash
sudo apt update && sudo apt upgrade -y
```

-  必要なユーティリティと言語のインストール

開発に必要なツールやライブラリ、言語などをインストールします。例えば、`build-essential` パッケージには、多くの開発プロジェクトで必要とされるコンパイラやライブラリが含まれています。

```bash
sudo apt install -y build-essential
```

特定の開発言語やフレームワークに関連するパッケージもこのタイミングでインストールすると良いでしょう。

-  タイムゾーンの設定

システムのタイムゾーンを正しく設定することで、時刻に関連する操作が正確に行われます。

```bash
sudo dpkg-reconfigure tzdata
```

-  ロケールの設定

システムのロケールを設定することで、言語や地域に関連する設定を調整できます。

```bash
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
```

必要に応じて、`en_US.UTF-8`をご自身の好みのロケールに置き換えてください。

-  Gitの設定

バージョン管理システムは、ほとんどの開発プロジェクトにとって不可欠です。Gitをインストールし、ユーザー名とメールアドレスを設定します。

```bash
sudo apt install -y git
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
```

これらの初期設定を行うことで、WSL上のUbuntu 22.04環境をスムーズにかつ効率的に使用するための基盤を整えることができます。

## 4. Dockerのインストール

WSL環境にDockerをインストールするには、以下のコマンドを実行します。

-  Linuxディストリビューションでターミナルを開きます。
-  Dockerのインストールスクリプトをダウンロードし、実行します。

```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
```

-  Dockerサービスを起動し、起動時に自動的にDockerが起動するように設定します。

```bash
sudo systemctl enable docker
sudo systemctl start docker
```

-  ユーザーをdockerグループに追加し、ログアウトして再ログインします。これにより、sudoなしでDockerコマンドを実行できるようになります。

```bash
sudo usermod -aG docker $USER
```

-  Dockerのバージョン確認

Dockerが正しくインストールされているか、どのバージョンがインストールされているかを確認するには、ターミナルから以下のコマンドを実行します。

```bash
docker --version
```

このコマンドは、Dockerのバージョン情報を表示します。例えば、「Docker version 20.10.7, build f0df350」といった形式で出力されるはずです。

-  Docker Engineの動作確認

Docker Engineが正しく動作していることを確認するために、Hello Worldイメージを実行することが一般的です。このテストは、Dockerが正しくインストールされ、コンテナを起動できる状態にあるかどうかを確認します。

```bash
docker run hello-world
```

このコマンドを実行すると、Dockerは「hello-world」というイメージを探し（ローカルに存在しない場合はダウンロードし）、コンテナを起動して、Hello Worldメッセージを表示します。成功すれば、Dockerが正しく機能していることが確認できます。

-  追加のDockerコマンド

Dockerの動作確認に役立つその他のコマンドは以下の通りです。

- **Dockerの状態確認**:
```bash
sudo systemctl status docker
```
このコマンドは、Dockerサービスの状態を表示します。正常に動作していれば、「active (running)」と表示されます。

- **インストールされているDockerイメージのリスト**:
```bash
docker images
```
このコマンドは、ローカルにインストールされているDockerイメージのリストを表示します。

これらの基本的なコマンドを使うことで、Dockerのインストール状況を確認し、基本的な動作確認を行うことができます。

## 5. Docker Composeのインストール

Docker Composeは、2021年8月にリリースされたDocker Compose V2から、Docker CLIに統合されています。これにより、追加でdocker-composeをインストールする必要がありません。このバージョンでは、従来のdocker-composeコマンドに代わり、docker composeという新しい形式のコマンドが導入されました。

Docker Compose のバージョン確認

```bash
docker compose version
```
上記のコマンドでDocker Composeのバージョンが表示されれば、インストールは完了です。