メインコンテンツまでスキップ

第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を最新に寄せる(地味に超大事)
C. ディストリ(Ubuntuなど)が WSL2 になってるか確認
  • wsl -l -v(入ってるLinux一覧と WSL1/2 が見れます)(Microsoft Learn)

もし VERSION が 1 になってたら、これで直します👇

ついでに、新規インストールを全部WSL2に寄せるなら👇


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) 今日からの運用ルール(超かんたん)📏✨


次の章(第29章)の「固定を壊さない運用ルール」に入る前に、もしよければ👇だけ教えてください(すぐ解決に直結します)😆

  • いまプロジェクト置いてる場所って Windows側(Cドライブ配下)?それとも WSL側(/home/...