FastAPIの勉強の続き。
SQLModelを使ってDBとやりとりしたい。
DockerでPostgreSQLコンテナを起動しようとしたところ起動しない!
docker compose up
docker: 'compose' is not a docker command.
See 'docker --help'
Docker Engine は入っているけど docker compose が入っていない状態…?
Copilotに聞いてみると「Docker Desktop」を入れるようにおすすめされる。
しかし、Docker Desktopは商用利用は有料。商用利用でも無料で使えるほうが嬉しい私は、
Copilotに 「Docker Desktopは使いたくない。WSL上にDocker(Docker CE)をインストールするには?」 と尋ねました。
Copilotの回答の手順の通りにやったところあっさり成功👏
実は、そもそもCopilotに 「WSL上にdocker composeをインストールするには?」 と聞くべきところを間違えて尋ねていました。
大は小を兼ねるということで(?)
とりあえず未来の自分のためにメモしておきます。
必要なもの
- WSL2
- WSL2のsystemdの有効化
- Docker Engine(Dockerの本体)
- docker-compose-plugin(複数コンテナを管理する拡張機能)
WSL(Ubuntu)に Docker CE をインストールする手順
01 WSL が WSL2 で動いているか確認
WSL2 でないと Docker Engine が動かないため、最初に確認する。
PowerShell で実行
wsl -l -v を実行
Ubuntu が Version 2 になっていることを確認
Version 1 の場合は
wsl --set-version Ubuntu 2 で変換
02 WSL の systemd を有効化
Docker Engine は systemd が必要なので、WSL の設定を変更する。
WSL Ubuntu ターミナルで実行
sudo nano /etc/wsl.confg
開いたファイルに以下を追記して保存(Ctrl+O -> Enter -> Ctrl+X)します。
[boot]
systemd=true
WSL を再起動
2026/07/18追記
以降の手順
・03 Docker CE の公式リポジトリを追加
・04 Docker Engine をインストール
を実行しなくても
Docker公式が自動インストールスクリプトを提供していました。
下記のコマンドを実行して手順03と04はスキップしてください。
curl [https://get.docker.com](https://get.docker.com) | sh
参考: https://docs.docker.jp/linux/step_one.html
03 Docker CE の公式リポジトリを追加
Ubuntu に Docker Engine をインストールするための準備。
WSL Ubuntu ターミナルで実行
# パッケージリストを更新(最新のソフトがあるか確認)
sudo apt update
# HTTPS経由でリポジトリを取得するための暗号化通信に必要なツール(証明書など)をインストール
sudo apt install ca-certificates curl gnupg
# Docker公式のGPG鍵(安全な通信のための鍵)を保存するディレクトリを作成
# -m 0755 でアクセス権限(パーミッション)を適切に設定
sudo install -m 0755 -d /etc/apt/keyrings
# Docker公式のGPG鍵をダウンロードし、指定フォルダに保存
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
# Ubuntuのシステム情報(バージョン名など)を環境変数として読み込む
. /etc/os-release
# Docker公式のパッケージリポジトリ(ダウンロード元)のURLをリストファイルに書き込む
# $VERSION_CODENAME にはUbuntuのバージョン名(例: noble, jammy など)が自動で入る
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $VERSION_CODENAME stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
04 Docker Engine をインストール
WSL 上に純粋な Docker CE をインストールする。
WSL Ubuntu ターミナルで実行
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
インストール後、
sudo systemctl enable --now docker
で起動
enable : WSL(Ubuntu)が起動したときに、自動でDockerが立ち上がるように予約される。
ターミナルには、自動起動用のリンク(シンボリックリンク)を作成した旨のメッセージが表示される。
05 sudo なしで Docker を使えるようにする
毎回 sudo を付けるのは面倒なので、ユーザーを docker グループに追加する。
WSL Ubuntu ターミナルで実行
sudo usermod -aG docker $USER
WSL を再起動
再ログイン後、以下のコマンドが sudo なしで動くことを確認。
WSL Ubuntu ターミナルで実行
# バージョンが表示されるか確認
docker --version
# dockerコマンドがエラーなく動くか確認
docker ps
# sudoなしでコンテナが起動できるか最終確認
docker run hello-world
06 docker-compose が使えるか確認する
Docker Desktop なしでも compose が使えるようになる。
WSL Ubuntu ターミナルで実行
docker compose version でバージョンが表示されれば OK
動作確認(おまけ)
docker composをファイルからではなく、標準入力(画面から渡されたテキスト)をYAMLとして読み込んで実行する。hello-worldイメージを使って一時的にコンテナを起動し、動作確認メッセージが表示されたら自動で終了する。
WSL Ubuntu ターミナルで実行
echo "services:
hello:
image: hello-world" | docker compose -f - up