はじめに
プライベート用にラップトップを購入したので、環境構築をしました。
WSL2やDockerの構築記事はすでにたくさんあるので、今さら感はありますが、自分の備忘録として残しておきます。仕事でRHEL系のLinuxサーバーを扱っているので、UbuntuではなくRocky Linuxを選びました。同じような環境の方の参考になれば幸いです。
この記事でできること
| 項目 | 内容 |
|---|---|
| 所要時間 | 約30分 |
| 環境 | Windows 10/11 + WSL2 |
| 対象 | WSL2初心者・RHEL系エンジニア |
環境
- Windows 11
- WSL2
- Rocky Linux 9.7 (Blue Onyx)
- Docker Engine 29.2.1
手順
1. WSL2のインストール
PowerShellを管理者として起動し、以下を実行します。
wsl --install
インストール後、PCを再起動します。
再起動後、WSL2がデフォルトになっているか確認します。
wsl --set-default-version 2
WSLのバージョンが古いと後続の手順でエラーになる場合があります。以下のコマンドで最新版に更新しておくと安心です。
wsl --update
2. Rocky LinuxのWSL用イメージをダウンロード
Rocky LinuxはMicrosoft Storeにないため、公式サイトからWSL専用イメージをダウンロードします。
まず保存先フォルダを作成します。
mkdir C:\WSL\Rocky9
次にWSL専用イメージ(.wsl形式)をダウンロードします。
Invoke-WebRequest -Uri https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-WSL-Base.latest.x86_64.wsl -OutFile C:\WSL\Rocky9\Rocky9.wsl
PowerShellでは curl が Invoke-WebRequest のエイリアスになっているため、Linuxの curl と同じオプションは使えません。
回避策1: Invoke-WebRequest を使う(上記のコマンド)
回避策2: curl.exe と拡張子をつけて実行する
curl.exe -L -o C:\WSL\Rocky9\Rocky9.wsl https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-WSL-Base.latest.x86_64.wsl
curl.exe とすることでPowerShellのエイリアスではなく、Windows標準搭載のcurlバイナリが直接呼び出されるため、Linuxと同じオプションがそのまま使えます。
3. WSL2にインポート
ダウンロードしたイメージをWSL2にインストールします。
wsl --install --from-file C:\WSL\Rocky9\Rocky9.wsl --name Rocky9
起動するとユーザー名の入力を求められます。任意のユーザー名を設定してください。
Please create a default user account.
Enter new UNIX username: yourname
ユーザーは自動的に wheel グループに追加されるため、sudo が使えます。
4. パスワードの設定
sudo passwd yourname
5. Rocky Linuxのバージョン確認
cat /etc/rocky-release
Rocky Linux release 9.7 (Blue Onyx)
6. Rocky9をデフォルトに設定
PowerShellで以下を実行します。
wsl --set-default Rocky9
これでWindows Terminalを開くとRocky9が自動的に起動します。
7. WSL2のリソース設定(任意)
デフォルトではWSL2がWindowsのリソースを多く消費することがあります。WSL Settingsアプリで制限をかけることをおすすめします。
スタートメニューで WSL Settings と検索して開き、Resources からメモリ・CPU・Swapを設定します。
筆者の環境(16GB RAM・10コア)では以下の設定にしました。
| 項目 | 設定値 |
|---|---|
| Memory | 6GB |
| Processors | 4 |
| Swap | 3GB |
設定後はWSLを再起動して反映させます。
wsl --shutdown
wsl -d Rocky9
8. Docker Engineのインストール
Rocky Linux上でDockerをインストールします。
なぜDocker Desktopではないのか?
Docker Desktopは従業員250人以上・年間売上1000万ドル以上の企業では有料です。Docker Engine(CUIのみ)は無料で使えます。
# パッケージ更新
sudo dnf update -y
# Docker公式リポジトリを追加
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
# Docker Engineをインストール
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# sudoなしでdockerを使えるようにする
sudo usermod -aG docker $USER
usermod を実行しただけでは現在のセッションに反映されません。一度 exit でWSLを抜けて再度入るか、以下のコマンドで即時反映できます。
newgrp docker
9. Dockerの自動起動設定
WSL2起動時にDockerが自動で立ち上がるよう設定します。
systemd=true を有効化することで、systemctl enable docker の設定が機能しDockerが自動起動します。
# systemdを有効化
sudo tee /etc/wsl.conf <<EOF
[boot]
systemd=true
EOF
# Dockerの自動起動を有効化
sudo systemctl enable docker
設定後、WSLを再起動します。
wsl --shutdown
10. 動作確認
Rocky9を起動してDockerが動いているか確認します。
docker run hello-world
以下のように表示されれば成功です。
Hello from Docker!
This message shows that your installation appears to be working correctly.
よくあるハマりどころ
.tar.xz形式はそのままインポートできない
公式サイトにはコンテナ用の .tar.xz イメージもありますが、WSL2に直接インポートしようとするとエラーになります。
インポートされたファイルは有効な Linux ディストリビューションではありません。
エラー コード: Wsl/Service/RegisterDistro/WSL_E_NOT_A_LINUX_DISTRO
WSL専用の .wsl 形式のイメージを使う方が手軽です。公式ドキュメントにも記載があります。
curlコマンドがPowerShellで動かない
PowerShellでは curl が Invoke-WebRequest のエイリアスになっているため、Linuxの curl と同じオプションは使えません。Invoke-WebRequest を使うか、curl.exe と拡張子をつけて実行しましょう。
まとめ
WSL2にRocky Linux 9を導入し、Docker Engineをインストールする手順を紹介しました。
仕事でRHEL系サーバーを扱うエンジニアにとって、Ubuntu環境よりも実務に近い練習ができます。
次回はこの環境にOllama + Open WebUIを使ったローカルAI基盤を構築する手順を紹介します。
参考
この記事はClaude(Anthropic)を活用して作成しました。