docker compose の使い方

まとめて動かす

書き方

docker compose up -d [--build]
docker compose ps / logs [サービス]
docker compose exec サービス コマンド
docker compose down [-v]
docker compose config

compose.yaml に書いた複数のコンテナ(サービス)・ネットワーク・ボリュームを、まとめて作って動かします。サービス名で互いを呼べます。

よく使うオプション

オプション意味
up -d全部のサービスを作って裏で動かす(--build でイメージも作り直す)
down止めて、コンテナとネットワークを消す(-v でボリュームも消す)
psサービスの状態を出す
logs -f サービスログを出し続ける
exec サービス コマンド動いているサービスの中でコマンドを動かす
config変数を埋めたあとの compose.yaml を出す(書き間違いの確認)
-f ファイルcompose.yaml 以外のファイルを使う
-p 名前プロジェクト名を決める(既定はディレクトリの名前)

例

$ docker compose up -d[+] Running 3/3
 ✔ Network myapp_default  Created
 ✔ Container myapp-db-1   Started
 ✔ Container myapp-web-1  Started

compose.yaml に書いたサービス・ネットワーク・ボリュームをまとめて作り、裏で動かします。

$ docker compose psNAME          IMAGE         SERVICE   STATUS         PORTS
myapp-db-1    postgres:17   db        Up 2 minutes   5432/tcp
myapp-web-1   myapp-web     web       Up 2 minutes   0.0.0.0:8080->3000/tcp

このプロジェクトのサービスの状態を出します。

$ docker compose logs -f web

web のサービスのログを出し続けます。サービス名を書かないと全部のログが混ざって出ます。

$ docker compose config --servicesdb
web

compose.yaml に書いたサービスの名前を一覧にします。書き間違いがあるとここでエラーになるので、up の前の確認に使えます。

$ docker compose down

コンテナとネットワークを消します。名前付きのボリュームは残るので、データは消えません。

よくある間違い・注意

  • 古い docker-compose(ハイフン付き)は v1 で、もう更新されていません。今は docker compose(スペース)を使います。
  • compose.yaml を書き換えても、動いているコンテナには効きません。docker compose up -d をもう一度打つと、変わったものだけ作り直されます。
  • down -v はボリュームも消すので、データベースの中身がなくなります。

実際に打って練習する

Docker コースの Lv35「船団の設計図 compose.yaml」で覚えます(第5章 船団(Compose))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る