第28章:WindowsでのDockerはWSL2が基本路線🐧🪟
この章のテーマはシンプルです👇 WindowsでDockerを安定して使うなら、「WSL2(Linux環境)に寄せる」だけで事故が激減するって話です😆✨
1) まず結論:WSL2が“標準ルート”です✅🐳
Docker Desktop は、Windows上で Linux コンテナを動かすときに WSL2 バックエンドを使うのが基本になっています。(Docker Documentation) そして公式のベストプラクティスとしても、
- WSLは最新推奨
- 最低でも WSL 2.1.5 以上が必要(古いと不調になりやすい)
が明言されています。(Docker Documentation)
ここを満たしてるだけで「なんか不安定…😇」が激減します👍
2) WSL2って何がうれしいの?🤔💡(超ざっくり)
WSL2は「Windowsの中に、ちゃんとLinuxカーネルが動くエリアを作る仕組み」です🐧 DockerはLinuxコンテナなので、Linuxに近い場所で開発するほど自然に動くわけです✨
特に効くのがこれ👇
- 🔥 ファイル監視(ホットリロード)が安定する Linuxコンテナが受け取るファイル変更通知(inotify)は、ファイルがLinux側にある方が正しく届きやすいです。(Docker Documentation)
- ⚡ ビルド/実行が速くなりやすい
Windows側のファイル(例:
/mnt/c経由)を bind mount すると遅くなりやすいので、プロジェクトはWSL側に置くのが推奨です。(Docker Documentation)
つまり、置き場所が9割です😎📦
3) 3分でできる「WSL2 健康診断」🩺✨
PowerShell(通常でOK、必要なら管理者)で、順に叩くだけです👇
A. WSLが入ってるか&入れる(未導入なら)
- 未導入なら基本はこれ:
wsl --install(標準のLinuxも入ります)(Microsoft Learn)
B. WSLを最新に寄せる(地味に超大事)
wsl --updateでWSL更新(コレめちゃ効きます)(Microsoft Learn)wsl --versionでバージョン確認できます。(Microsoft Learn) Docker Desktop側は WSL 2.1.5+ が目安です。(Docker Documentation)
C. ディストリ(Ubuntuなど)が WSL2 になってるか確認
wsl -l -v(入ってるLinux一覧と WSL1/2 が見れます)(Microsoft Learn)
もし VERSION が 1 になってたら、これで直します👇
wsl --set-version <DistroName> 2(Microsoft Learn)
ついでに、新規インストールを全部WSL2に寄せるなら👇
wsl --set-default-version 2(Microsoft Learn)
4) Docker Desktop 側の「WSL連携」チェック✅🔧
ここが外れてると「WSLの中で docker コマンド打ったら動かない😇」が起きます。
Docker Desktop を開いて、設定の Settings → Resources → WSL Integration を見てください。(Docker Documentation)
- デフォルトのWSLディストリ(例:Ubuntu)に統合が入ってる
- もし別ディストリ使うなら、そこにも統合をON
という考え方です。(Docker Documentation)
5) いちばん大事:「プロジェクトはWSL側に置く」📁🐧(これで勝つ)
遅い・監視効かない・なんか不安定の大半はここです💥
Docker公式の推奨はズバリ👇
- Linuxファイルシステムに置いた方が速い
/mnt/cみたいな“Windows側ファイル”のマウントは避けたい(Docker Documentation)
たとえば、WSL(Ubuntu)内でこういう場所に置くのが王道です👇
~/projects/myapp(=/home/<you>/projects/myapp)
そしてWindowsからもエクスプローラーで見たいなら、だいたい👇みたいな経路で見えます(WSLの共有機能)
\\wsl$\Ubuntu\home\...(※環境でディストリ名は変わります)
編集はVS CodeをWSL側で開くのが安定しやすいです🧑💻✨(ファイル監視も速度も)
6) よくある症状と“即効薬”💊😆
症状①:Docker Desktopが不調・起動が怪しい😇
✅ WSLを更新 → wsl --update (Microsoft Learn)
✅ WSLが古すぎないか(2.1.5+ 目安)(Docker Documentation)
症状②:WSL内で docker が動かない / 見つからない🫠
✅ Docker Desktop の WSL Integration をON(Settings → Resources → WSL Integration)(Docker Documentation)
✅ ディストリが WSL2 になってるか wsl -l -v で確認→必要なら wsl --set-version ... 2 (Microsoft Learn)
症状③:ホットリロードが効かない / 監視が飛ぶ👀💥
✅ プロジェクトが Windows側(/mnt/c)に置かれてないか確認
Linuxコンテナが受け取る監視イベント(inotify)の都合で、Linux側に置く方が安定しやすいです。(Docker Documentation)
症状④:とにかく遅い🐢💦
✅ /mnt/c をマウントしてないか(避けたい)(Docker Documentation)
✅ WSLを最新版に寄せる(wsl --update)(Microsoft Learn)
7) ミニ実践:WSL2ルートで「動作確認」✅🎮
WSLのターミナルで、まずはこれが通ると安心です👇
docker version(Dockerが見えてるか)docker run --rm hello-world(最小テスト)
ここまでOKなら、以降の章で作った compose.yml / Dockerfile が **“WindowsでもほぼLinuxと同じ感覚”**で動きやすくなります😆🔥
8) 今日からの運用ルール(超かんたん)📏✨
- ✅ WSLは
wsl --updateで最新に寄せる(Microsoft Learn) - ✅ WSLのバージョンは
wsl --versionで確認できる(Microsoft Learn) - ✅ ディストリが WSL2 かは
wsl -l -vで見る(Microsoft Learn) - ✅ 変だったら
wsl --set-version <Distro> 2(Microsoft Learn) - ✅ プロジェクトは WSL側(Linux側)に置く(速い&監視安定)(Docker Documentation)
- ✅ Docker Desktop の WSL Integration をON(Docker Documentation)
次の章(第29章)の「固定を壊さない運用ルール」に入る前に、もしよければ👇だけ教えてください(すぐ解決に直結します)😆
- いまプロジェクト置いてる場所って Windows側(Cドライブ配下)?それとも WSL側(
/home/...)?