WSL2 上の Ubuntu 24.04 に、公式 apt リポジトリから Docker Engine (Docker CE) と Docker Compose (V2) を導入する手順を整理した。Docker Desktop を使わず、WSL 内で完結する構成となっている。
ディストリビューション同梱の非公式パッケージではなく公式リポジトリから入れるため、以降のアップグレードも通常の apt upgrade を実行すれば良い。
systemd の有効化を確認する
Docker Engine はデーモンの管理に systemd を利用する。近年の WSL では Ubuntu 24.04 は既定で systemd が有効になっているが、念のため確認しておく。
# systemd が PID 1 かどうか確認
ps -p 1 -o comm=
# → "systemd" と表示されれば有効
systemd 以外(init など)が表示される場合は、以下で有効化する。
sudo tee /etc/wsl.conf > /dev/null <<'EOF'
[boot]
systemd=true
EOF
編集後は Windows 側の PowerShell から WSL を再起動する。
wsl --shutdown
再度 Ubuntu を起動し、ps -p 1 -o comm= が systemd になっていれば OK
競合する古いパッケージを削除する
ディストリビューション同梱の非公式パッケージが残っていると公式版と競合するため、先に削除する。
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
Docker 公式 apt リポジトリを設定する
GPG 鍵の登録とリポジトリ追加を行う。
# 必要ツールと Docker の公式 GPG 鍵を登録
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# apt ソースを追加(Ubuntu のコードネーム・アーキテクチャを自動判定)
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update
Docker Engine と Compose プラグインをインストールする
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
各パッケージの役割は以下のとおり。
-
docker-ce/docker-ce-cli: Docker Engine 本体と CLI -
containerd.io: コンテナランタイム -
docker-buildx-plugin:docker buildx(ビルド拡張) -
docker-compose-plugin:docker compose(Compose V2)
Docker デーモンを起動・確認する
sudo systemctl enable --now docker # 自動起動を有効化しつつ起動
systemctl status docker # 状態確認(q で終了)
非 root ユーザーで docker を実行できるようにする
毎回 sudo を付けずに使うため、自分を docker グループに追加する。
sudo usermod -aG docker $USER
反映するには一度ログアウト/再ログインするか、Windows 側の PowerShell で wsl --shutdown してから再起動する。
現在のシェルだけ即時反映したいなら以下でもよい。
newgrp docker
動作確認
# バージョン確認
docker --version
docker compose version
# 動作テスト(テストイメージを取得して実行)
docker run --rm hello-world
Hello from Docker! が表示されれば、Engine・ランタイム・ネットワークが正しく動いている。
Docker Compose の確認確認は以下の通り。
mkdir -p /tmp/compose-test && cd /tmp/compose-test
cat > compose.yaml <<'EOF'
services:
hello:
image: hello-world
EOF
docker compose up
docker compose down
アップデード / アンインストール
apt でアップデートができる。
sudo apt update
sudo apt upgrade
アンインストールは以下の通り。
# パッケージ削除
sudo apt purge docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# データ削除(イメージ・コンテナ・ボリューム等がすべて消える)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# リポジトリ設定・鍵の削除
sudo rm /etc/apt/sources.list.d/docker.sources
sudo rm /etc/apt/keyrings/docker.asc