はじめに:なぜ今、WSL2とDocker Desktopなのか?
現代のソフトウェア開発において、コンテナ技術はデプロイメントの標準となりつつあります。特にDockerは、開発環境のポータビリティと再現性を飛躍的に向上させます。Windows環境でDockerを利用する場合、以前はHyper-Vベースの仮想マシンが使われていましたが、リソース消費が大きく、パフォーマンスの問題を抱えることがありました。
そこで登場するのが、Windows Subsystem for Linux 2 (WSL2) です。WSL2は、軽量な仮想マシン上で完全なLinuxカーネルを実行できるため、Windows上でネイティブに近いパフォーマンスでLinux環境を利用できます。このWSL2とDocker Desktop for Windowsを連携させることで、Windowsの利便性とLinuxの強力なコンテナ技術を両立させ、非常に高速で効率的な開発環境を構築できます。
この記事では、WSL2上でDocker Desktopを動かし、軽量なコンテナ開発環境を構築するための初期設定手順を、具体的なコマンドとコードを交えて解説します。現場で今すぐ使える実践的な内容を目指しますので、ぜひ最後までお読みください。
ステップ1: WSL2の導入と基本設定
まず、Windows環境にWSL2が導入されているか確認し、必要に応じて設定を行います。
1. WSL2の有効化とインストール
Windows 10 バージョン 2004 以降、または Windows 11 が必要です。管理者権限でPowerShellを開き、以下のコマンドを実行します。
wsl --install
このコマンドは、WSLを有効化し、WSL2をデフォルトバージョンに設定し、Ubuntuディストリビューションをインストールします。既にWSLが導入されている場合は、以下のコマンドでWSL2にアップデートできます。
wsl --update
wsl --set-default-version 2
2. Linuxディストリビューションのインストール(必要であれば)
wsl --installでUbuntuが自動的にインストールされますが、別のディストリビューションをインストールしたい場合は、Microsoft Storeから選択してインストールできます。インストール後、初めて起動するとユーザー名とパスワードの設定を求められます。
3. Linux環境の初期設定
インストールしたLinuxディストリビューション(例: Ubuntu)を起動し、パッケージを最新の状態にアップデートしておきましょう。
sudo apt update
sudo apt upgrade -y
ステップ2: Docker Desktop for WindowsのインストールとWSL2連携
次に、Docker Desktopをインストールし、WSL2との連携を設定します。
1. Docker Desktopのダウンロードとインストール
Docker公式サイトからDocker Desktop for Windowsをダウンロードし、インストーラーを実行します。インストール中に「Use WSL 2 instead of Hyper-V (recommended)」のオプションが表示されたら、必ずチェックを入れてください。
2. Docker Desktopの設定(WSL2連携)
インストールが完了しDocker Desktopを起動したら、タスクバーのDockerアイコンを右クリックし、「Settings」を開きます。
- 左側のメニューから「General」を選択し、「Use the WSL 2 based engine」がチェックされていることを確認します。
- 次に「Resources」→「WSL Integration」を選択します。ここで、Dockerを連携させたいWSLディストリビューション(例: Ubuntu)を「Enabled」に設定します。
設定を保存すると、Docker Desktopが再起動する場合があります。
3. Dockerの動作確認
WSL2のLinuxターミナルを開き、Dockerが正しく動作しているか確認します。
docker --version
docker run hello-world
hello-worldコンテナが正常に実行され、「Hello from Docker!」のようなメッセージが表示されれば、WSL2とDocker Desktopの連携は成功です。
ステップ3: コンテナ開発環境の構築例(Python + Flask)
WSL2上でDocker Desktopが動作していることを確認できたので、簡単なWebアプリケーションをコンテナ化してみましょう。ここではPythonとFlaskを使ったシンプルな例を示します。
1. プロジェクトファイルの準備
WSL2のLinuxターミナルで、プロジェクト用のディレクトリを作成し、移動します。
mkdir my-flask-app
cd my-flask-app
以下の3つのファイルを作成します。
app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello from Flask in Docker on WSL2!'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
requirements.txt
Flask==2.3.2
Dockerfile
FROM python:3.9-slim-buster
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
2. Dockerイメージのビルド
プロジェクトディレクトリで以下のコマンドを実行し、Dockerイメージをビルドします。
docker build -t my-flask-app:latest .
-tオプションでイメージにタグ(名前とバージョン)を付けています。
3. Dockerコンテナの実行
ビルドしたイメージからコンテナを実行します。
docker run -p 5000:5000 my-flask-app:latest
-p 5000:5000は、ホストマシン(Windows)のポート5000と、コンテナ内のポート5000をマッピングしています。
4. ブラウザで確認
コンテナが起動したら、Webブラウザで http://localhost:5000 にアクセスしてください。「Hello from Flask in Docker on WSL2!」というメッセージが表示されれば成功です。
コンテナを停止するには、ターミナルで Ctrl+C を押すか、別のターミナルで docker ps でコンテナIDを確認し、docker stop <CONTAINER_ID> を実行します。
WSL2とDocker Desktop連携のメリット
この環境を構築することで、以下のような多くのメリットを享受できます。
- 圧倒的なパフォーマンス: WSL2のネイティブに近いLinuxカーネルのおかげで、Dockerコンテナの起動やI/O処理が非常に高速になります。
- リソース効率の向上: Hyper-Vベースの完全な仮想マシンと比較して、WSL2は必要なリソースが少なく、バックグラウンドでの動作も軽量です。
- 開発体験の向上: Linuxの強力なコマンドラインツールや開発ユーティリティをWindowsのファイルシステムとシームレスに連携させて利用できます。
- Windowsとの親和性: WindowsのデスクトップアプリケーションやIDE(VS Codeなど)から、WSL2上のDocker環境へ簡単にアクセスできます。
まとめ
この記事では、Windows環境でWSL2とDocker Desktopを連携させ、高性能なコンテナ開発環境を構築する初期設定手順を詳細に解説しました。
WSL2の導入からDocker Desktopのインストール、そしてWSL2との連携設定、さらには簡単なWebアプリケーションのコンテナ化まで、具体的な手順を追うことで、読者の皆様がすぐに現場で使える知識と経験を得られたことでしょう。この環境は、開発効率を大幅に向上させ、より快適な開発体験を提供します。
ぜひこの設定を試して、あなたの開発ワークフローを次のレベルへと引き上げてください。Happy Hacking!


コメント