Docker DesktopなしでDocker Engineを導入する方法|Windows 11・WSL2・Ubuntu 24.04
WindowsでDockerを使いたいけれど、Docker Desktopは入れたくない。そんな場合は、WSL2上のUbuntuにDocker Engineを直接インストールできます。
この記事では、Windows 11 Home + WSL2 + Ubuntu 24.04 LTSで、Docker Engine、Docker CLI、containerd、Buildx、Docker Compose pluginをセットアップする手順をまとめます。操作はターミナルだけですが、以後はdockerとdocker composeを通常どおり使えます。
この記事の構成と前提
Docker Desktopはインストールしません。DockerデーモンはUbuntu側で動かし、Windows側から使いたいときもWSL経由で呼び出します。
なぜDocker Desktopを使わないのか
Docker Desktopには無償利用の条件があります。Dockerの現行契約では、商用利用で無償のまま使えるのは、原則として従業員250人未満かつ年間売上1,000万米ドル未満の組織です。これを超える組織や政府機関などでは、有償サブスクリプションが必要になる場合があります。
Docker Desktopには、無償のまま使える組織規模・利用形態の条件があります。今回はDocker Desktopを使わず、WSL2上にDocker Engineを直接入れて、CLI中心の環境を作ります。
なお、Moby(Docker Engineの基盤)、Docker CLI、Compose、Buildx、containerdの各ソースリポジトリはApache License 2.0です。一方で、実際に導入するOSパッケージには依存コンポーネントも含まれます。「インストールされるものがすべてApache 2.0」と一括で断定せず、組織の利用判断では配布パッケージと利用するレジストリ・イメージの条件も確認してください。
Step 1: WSL2とUbuntu 24.04 LTSを入れる
Windowsの管理者として実行したPowerShellで、次を実行します。
wsl --install -d Ubuntu-24.04
初めてUbuntuを起動すると、セットアップの途中でLinux用のユーザー名とパスワードを聞かれます。これはWindowsのログイン情報とは別に設定します。WSLが古いPCでは、同じ管理者PowerShellでwsl --updateを実行してから進めてください。
すでにWSLを使っている場合でも、まずPowerShellでバージョンを確認しておくと安心です。
wsl --version
wsl -l -v
Ubuntuを初めて開いたときの入力
Ubuntuを初めて起動したときのセットアップ中に、次のようにLinux側で使うユーザー名を聞かれます。
Create a default Unix user account: yourname
yournameの部分には、好きな半角英数字のユーザー名を入力してEnterを押します。続けてパスワードを2回入力しますが、入力中の文字は*も含めて何も表示されません。正常な動作なので、そのまま入力してEnterを押してください。
このパスワードはWindowsのパスワードとは別で、以後sudoを実行するときに使います。ユーザー作成が終わり、yourname@PC名:~$のような表示になったら準備完了です。すでに設定済みなら、この節は飛ばして次へ進んでください。初回にWSLの案内ページが開いても、閉じて問題ありません。
Step 2: Docker Engineをインストールする
初回セットアップが終わったUbuntuのターミナルで、そのまま作業を続けます。Docker公式のインストールスクリプトを使うと、リポジトリの登録と必要なパッケージの導入をまとめて実行できます。
先に確認: 古いLinux版Dockerがある場合
Ubuntu内に以前導入したdocker.ioやdocker-composeがあると、Docker公式パッケージと競合することがあります。初めて入れる場合はこの節を飛ばして構いません。既存のLinux版Dockerを置き換える場合は、コンテナやイメージをどう扱うか確認したうえで、Docker公式の「conflicting packages」案内に従ってください。Docker Desktopの有無とは別の話です。
公式スクリプトを実行する
まずスクリプトをダウンロードします。
curl -fsSL https://get.docker.com -o get-docker.sh
ダウンロードしたスクリプトを、管理者権限で実行します。
sudo sh get-docker.sh
shはスクリプトを実行するコマンドです。スクリプトの内容を事前に確認したい場合だけ、less get-docker.shを使います。lessの画面はqで閉じます。
このスクリプトが、Docker Engine、CLI、containerd、Buildx、Compose pluginをまとめて導入します。処理が終わってプロンプト(yourname@PC名:~$)に戻るまで待ってください。Docker公式は、このスクリプトを主に開発環境向けとして案内しています。本番サーバーでは、公式aptリポジトリを個別に登録する方法を使ってください。
| パッケージ | 役割 |
|---|---|
docker-ce | Docker Engine(デーモン) |
docker-ce-cli | dockerコマンド |
containerd.io | コンテナ実行ランタイム |
docker-buildx-plugin | 拡張ビルド機能 |
docker-compose-plugin | docker composeコマンド |
Step 3: sudoなしでdockerを実行できるようにする
毎回sudo dockerと打たずに済むよう、現在のUbuntuユーザーをdockerグループへ追加します。
sudo usermod -aG docker $USER
このグループはDockerデーモンを操作でき、実質的にroot相当の権限につながります。共有PCや複数人が使うLinux環境では、追加するユーザーを慎重に選んでください。
まずUbuntuを終了してPowerShellへ戻ります。
exit
PowerShellで次を実行してWSLを停止し、Ubuntuを開き直します。Ubuntu-24.04が既定のディストリビューションなら、起動コマンドはwslだけで構いません。
wsl --shutdown
wsl
複数のディストリビューションを使っていてUbuntuを明示したい場合は、wsl -d Ubuntu-24.04を使います。
Step 4: 動作を確認する
Ubuntuで次を実行します。
docker run --rm hello-world
docker version
docker compose version
docker buildx version
hello-worldのメッセージが表示されれば、Docker Engineは動作しています。
Windows側のPowerShellから呼び出す方法
基本はUbuntu内で作業するのがおすすめです。PowerShellから一度だけ実行したい場合は、次のようにWSL経由で呼び出せます。
wsl -d Ubuntu-24.04 -- docker compose up
毎回wsl -d Ubuntu-24.04 --を付けるのが面倒なら、PowerShellプロファイルに関数を追加する方法もあります。
notepad $PROFILE
開いたファイルに、次の1行を追加します。
function docker { wsl.exe -d Ubuntu-24.04 -- docker @args }
PowerShellを開き直せば、docker psやdocker compose upをWindows側から呼び出せます。ただし、パス指定やマウント指定はLinux側のパスとして扱われる点に注意してください。
WSL2運用で知っておきたい注意点
プロジェクトはWSL側に置く
/mnt/c/...のようなWindowsファイルシステム上でも作業できますが、Linux側のホームディレクトリよりファイルI/Oが遅くなることがあります。Node.jsやJavaなど、依存ファイルが多いプロジェクトは、たとえば~/src/my-appに置くと扱いやすくなります。
Windowsのエクスプローラーからは、\\wsl$\Ubuntu-24.04\home\<Ubuntuのユーザー名>を開いてアクセスできます。VS Codeを使う場合は、WSL拡張を使ってUbuntu側のフォルダを開くと自然です。
WSLを停止するとDockerも止まる
Docker Desktopの常駐アプリではなく、WSL内のサービスとしてDockerを動かす構成です。wsl --shutdownを実行すると、Dockerコンテナも停止します。PC起動直後は、Ubuntuを開くか、wsl -d Ubuntu-24.04 -- docker psのようにWSLを起動してから使ってください。
Docker Hubやコンテナイメージの条件は別に確認する
Docker Desktopを使わないことと、Docker Hubの利用制限・レート制限・各コンテナイメージのライセンスは別の話です。業務利用では、使うレジストリとイメージの提供元・ライセンスも確認しましょう。
まとめ
Windows 11 Homeでも、WSL2上のUbuntuにDocker Engineを直接入れれば、Docker DesktopなしでDocker CLIとComposeを使えます。GUIが不要で、Linux環境で開発したい場合にはシンプルな構成です。
特に組織でDocker Desktopの無償利用条件を避けたい場合は、Desktopの条件と、Docker Engineやイメージのライセンスを分けて確認することが大切です。
参考リンク
- Docker公式: Install Docker Engine on Ubuntu
- Docker公式: Linux post-installation steps
- Docker公式: Docker Desktop license
- Docker Subscription Service Agreement
- Microsoft Learn: systemd in WSL

コメント
0 件のコメント :
コメントを投稿