1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【整理】Docker Desktop と WSL2(Ubuntu)直インストールの Docker Engine の違いと利点

1
Posted at

はじめに

Windows で Docker 開発環境を作る方法は、大きく分けて 2 つあります。

  1. Docker Desktop(WSL2 バックエンド) を使う
  2. WSL2 上の Ubuntu に Docker Engine を直接インストール する

どちらでも「WSL2 の Ubuntu から docker コマンドでコンテナを動かす」という体験は同じですが、アーキテクチャ・ライセンス・リソース消費が大きく異なります。この記事では、両者の違いとそれぞれの利点を整理し、どちらを選ぶべきかの判断基準をまとめます。

対象読者

  • Windows + WSL2 で開発していて、Docker の導入方式を迷っている人
  • 会社の支給 PC で Docker Desktop のライセンスが気になっている人
  • 開発環境のメモリを少しでも節約したい人

1. まず構成図で理解する

Docker Desktop(WSL2 バックエンド)の場合

Docker Desktop を WSL2 バックエンドで動かすと、docker-desktop(ブートストラップ用)と docker-desktop-data(データ保存用)という 2 つの専用 WSL ディストリビューションが自動作成され、その中で dockerd が動きます。Ubuntu からは WSL インテグレーション経由でこのエンジンを「借りている」形です。

WSL2 上の Ubuntu に Docker Engine を直接入れた場合

こちらは dockerd 自体が Ubuntu 内の普通の Linux サービスとして動きます。余計なものは何も挟まりません。


2. 違いの比較表

観点 Docker Desktop(WSL2 backend) Docker Engine 直(Ubuntu on WSL2)
dockerd の居場所 docker-desktop 専用ディストロ内 Ubuntu 内の通常プロセス(systemd 管理)
イメージ保存先 docker-desktop-data ディストロ Ubuntu の /var/lib/docker(= Ubuntu の vhdx 内)
ライセンス 従業員 250 人以上または年間売上 1,000 万ドル以上の組織では有償(Pro / Team / Business) Docker Engine / Moby はオープンソースのまま。商用でも無料
メモリ消費 起動するだけでコンテナ 0 台でも約 1.3GB 追加される計測例あり。常駐プロセス+GUI 分が上乗せ dockerd と containerd だけ。追加の常駐物なし
GUI あり(コンテナ/イメージ/ログの閲覧、拡張機能) なし(必要なら Portainer 等をコンテナで立てる)
起動・自動起動 Windows ログイン時に自動起動(設定可能) systemd 有効化で systemctl enable --now docker により自動起動
アップデート 自動(GUI 経由)。不意の UI 変更やバグに巻き込まれることがある apt で自分のタイミング。意図しない変更が入らない
Windows 側からの docker コマンド PowerShell からそのまま使える 基本は Ubuntu 内から(Windows に別途 CLI + コンテキスト設定すれば可能)
Kubernetes ワンクリックで有効化 kind / k3s / minikube などを自分で立てる
付随機能 Docker Scout、Extensions、Build Cloud 連携など なし(必要なものだけ自分で入れる)
メモリ・CPU の上限 Docker Desktop 自体に上限設定はなく、.wslconfig で WSL2 VM 全体を制限する 同じく .wslconfig で制限
トラブル時の調査 Desktop 側の診断ツール+ WSL 側の二重構造になりがち systemctl status / journalctl だけ。Linux の知識がそのまま使える

3. Docker Desktop の利点・向いている人

利点

  • セットアップが圧倒的に簡単:インストーラーを入れて WSL インテグレーションを有効にするだけ
  • GUI ダッシュボード:コンテナの状態・ログ・イメージを視覚的に確認でき、初学者や GUI 好きに優しい
  • Windows / WSL / macOS で操作感が統一される(チームに Mac ユーザーがいる場合に説明が楽)
  • Kubernetes のワンクリック有効化、Docker Scout による脆弱性スキャン、Extensions など付随機能が豊富
  • 複数 WSL ディストロから同じエンジンを共有できる

向いている人

  • Docker 初学者、まず手軽に始めたい人
  • GUI でコンテナを管理したい人
  • 個人・小規模組織(従業員 250 人未満かつ売上 1,000 万ドル未満)や教育・非商用 OSS で、無償条件に収まっている
  • 会社が Docker Business 等のサブスクリプションを契約済みの人

4. Docker Engine 直インストールの利点・向いている人

利点

  • ライセンスを気にしなくてよい:有償化の対象はあくまで Docker Desktop であり、Docker Engine / Moby プロジェクトは従来通りオープンソース。大企業の支給 PC でも稟議なしで導入しやすい
  • 軽量:Docker Desktop は起動だけで約 1.3GB のメモリを追加消費する計測例がある。直インストールなら dockerd + containerd だけなので、ノート PC のメモリをコンテナ本体に回せる
  • 本番環境に近い:本番の Linux サーバーと同じく systemctl でサービス管理し、/var/lib/docker にデータが置かれる。運用知識がそのまま本番で活きる
  • 構成が単純で壊れにくい:「Windows 側の GUI アプリ → 専用ディストロ → Ubuntu」という 3 層ではなく 1 層なので、不調時の切り分けが速い
  • アップデートを自分でコントロールできる:apt の更新タイミングは自分で決められるため、勝手に挙動が変わらない

向いている人

  • 大企業など Docker Desktop の有償条件に引っかかる組織の人
  • メモリを節約したい人(WSL2 上で複数コンテナを常時動かすなど)
  • Linux のサービス管理・運用スキルを磨きたい人
  • 再現性重視で、環境をコード(セットアップスクリプト)で管理したい人

5. 判断フローチャート

ライセンス条件や料金(Pro / Team / Business)は改定されることがあるため、導入前に必ず Docker 公式の Pricing ページで最新情報を確認してください。


6. Docker Engine 直インストールの手順(最短)

せっかくなので、WSL2 + Ubuntu に直接入れる手順も載せておきます。

6.1 systemd を有効化する

Ubuntu 側で /etc/wsl.conf を編集します。

sudo tee /etc/wsl.conf <<EOF
[boot]
systemd=true
EOF

Windows の PowerShell で一度 WSL を落としてから起動し直します。

wsl --shutdown
wsl -d Ubuntu

6.2 Docker Engine をインストール

# 公式の便利スクリプトを使う場合(手軽)
curl -fsSL https://get.docker.com | sudo sh

# sudo なしで docker を叩けるようにする
sudo usermod -aG docker $USER

# 自動起動を有効化
sudo systemctl enable --now docker

再ログイン後、docker run hello-world が動けば完了です。

本番により近い運用にしたい場合は、get.docker.com のスクリプトではなく Docker 公式の apt リポジトリを登録して docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin を入れる手順が推奨されます。


7. ハマりどころ(両構成共通)

  • メモリが際限なく食われる:WSL2 の VM は使った分だけメモリを取りに行きます。上限は %UserProfile%\.wslconfig で制限しましょう。Docker Desktop 自体にはメモリ上限の設定項目がなく、結局 .wslconfig で制限する形になります。
[wsl2]
memory=8GB
processors=4
  • OS をまたぐファイルアクセスは遅い\\wsl$ 経由や /mnt/c 配下でのビルドは激遅になります。ソースコードとボリュームは「Docker を使う側の OS」である Ubuntu 側(~/ 以下)に置くのが鉄則です。
  • ポート公開-p 3000:3000 したポートには Windows から localhost:3000 でアクセスできます(localhostForwarding がデフォルト有効)。WSL 内から Windows 側サービスに localhost で繋ぎたい等の逆方向が必要なら networkingMode=mirrored を検討してください。

まとめ

こんな人は おすすめ
個人・学習用で手軽さ最優先、GUI が欲しい Docker Desktop
大企業の支給 PC でライセンスをクリアしたい Docker Engine 直
メモリを節約してコンテナをたくさん回したい Docker Engine 直
本番 Linux サーバーに近い運用を学びたい Docker Engine 直
チームに Mac ユーザーがいて手順を統一したい Docker Desktop

どちらを選んでも WSL2 のカーネル上で dockerd が動くという本質は同じです。「Docker Desktop は便利なラッパー、Engine 直は素の Linux」と捉えると、違いが整理しやすいと思います。


参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?