Dock Stay
WSL2 をバックエンドにする - Docker Desktop の使い方・オプション・サンプル

WSL2 をバックエンドにする - Docker Desktop

Docker Desktop for Windows は WSL2 をバックエンドとしてコンテナを動かす構成。`docker-desktop` 専用ディストリに dockerd を常駐させ、ユーザーのディストリからは統合機能で透過的に使える。

概念図

Docker Desktop diagram

構文

bash
docker context ls
wsl -l -v

実例

docker-desktop ディストリが見えるか確認

bash
wsl -l -v

現在の Docker コンテキストを確認

bash
docker context ls

WSL2 内から bind mount 付きで起動

bash
docker run --rm -it -v $PWD:/work -w /work alpine sh

概要

Docker Desktop for Windows はインストール後に 2 つの専用 WSL2 ディストリを作成します。

docker-desktop は Docker デーモン(dockerd / containerd)が動く場所で、docker-desktop-data(バージョンによっては別形式)はイメージ・レイヤー・ボリュームのデータを保持します。

ユーザーが普段使うディストリ(Ubuntu など)は「WSL integration」を通じて docker CLI とソケットだけを共有し、実際のコンテナは裏の docker-desktop VM 側で動きます。

これにより、複数のディストリから同じ Docker インスタンスを使えるほか、Windows 側 PowerShell からも同じ docker コマンドが使えます。

典型的な用途

  • Windows 上で Linux コンテナ開発をする個人・チームの標準構成
  • 複数の WSL2 ディストリから同じコンテナ環境を共有
  • IDE(VS Code、JetBrains 等)の devcontainer 機能のバックエンド
  • Docker Compose / Kubernetes ローカル開発
  • Linux 本番環境の挙動を手元で確かめるサンドボックス

コマンド例

# WSL から見るとこう見える
wsl -l -v
# NAME                   STATE           VERSION
# * Ubuntu-22.04        Running         2
#   docker-desktop      Running         2
#   docker-desktop-data Running         2

# Docker コンテキスト
docker context ls
# NAME            DESCRIPTION                       DOCKER ENDPOINT
# desktop-linux * Docker Desktop                    unix:///...
# default         Current DOCKER_HOST based...      unix:///var/run/docker.sock
# WSL2 ディストリ(Ubuntu)から
docker version
docker run --rm hello-world

# bind mount のパス指定
# 推奨: WSL2 側のパスを使う
docker run --rm -v $HOME/app:/app -w /app node:20 npm test

# 非推奨: Windows 側のパス(遅い)
# docker run --rm -v /mnt/c/Users/alice/app:/app ...

ベストプラクティス

  • ソースコードは WSL2 側(~/...)に置き、bind mount もそこから行う。/mnt/c/... は IO が重くビルドが遅い
  • Docker Desktop 設定の「Resources > WSL Integration」で、使うディストリだけを有効化する
  • メモリ上限は .wslconfig で設定し、VM 停止時の解放挙動(autoMemoryReclaim)を現行 WSL に合わせて使う
  • プロキシ環境では Docker Desktop の設定画面で HTTP プロキシを登録し、docker-desktop ディストリから外部レジストリに届くようにする
  • 有償制約を避けたい場合は Rancher Desktop や Podman Desktop への移行を検討し、CLI 互換を保つ

注意点

  • Docker Desktop は大企業に対して有償ライセンスが必要。社内配布ルールを事前に確認する
  • docker-desktop-data.vhdx は放置すると肥大化する。docker system prune --volumes や VHDX の圧縮コマンドで回収する
  • Docker Desktop をアンインストールすると専用ディストリごと消え、再現できないコンテナ状態は失われる
  • Hyper-V に依存するため、他の仮想化製品(一部の古い VMware 等)と同居すると片方が動かなくなることがある
  • 企業 VPN によっては Docker Desktop の仮想 NIC とルーティングが競合する

関連トピック