メインコンテンツまでスキップ

Docker Compose チートシート:目的別コマンドリファレンス

タグ:

業務で Docker Compose を使っていると、オプションや構文を都度調べ直すことがよくあります。本記事では、業務でよく使う Docker Compose コマンドを目的別にまとめました。操作したいことからすばやく引けるリファレンスとして活用してみましょう。

ビルド

サービスのイメージをビルドします。compose.ymlbuild セクションに定義された Dockerfile を使ってビルドします。

docker compose build

キャッシュを使わずにイメージをビルドし直します。依存パッケージを更新したいときなどに使います。

docker compose build --no-cache

compose.yml に定義したイメージを Docker Hub などのレジストリから取得します。ビルド不要なサービスのイメージを事前に用意しておくときに使います。

docker compose pull

起動

コンテナを作成して起動します。-d を付けるとバックグラウンドで実行されます。サービス名を指定するとそのサービスのみ起動でき、依存関係のあるサービスは合わせて起動されます。

docker compose up
docker compose up -d
docker compose up -d <サービス名>

イメージをビルドしてから起動します。コードの変更を反映させたいときに使います。

docker compose up --build -d

停止中のコンテナを起動します。docker compose down せずに stop で止めた場合は、こちらで再開できます。

docker compose start

コンテナを再起動します。設定ファイルの変更を反映させたいときや、コンテナが不安定なときに使います。

docker compose restart

コンテナ状態

サービスの状態(起動中・停止中など)を確認します。コンテナ名・ステータス・使用ポートが一覧で表示されるため、起動確認に役立ちます。

docker compose ps

ログを表示します。-f でリアルタイム追跡ができ、--tail で表示行数を絞れます。

docker compose logs
docker compose logs -f
docker compose logs --tail 100 <サービス名>

サービスコンテナで実行中のプロセスを確認します。コンテナ内で何が動いているかを把握したいときに使います。

docker compose top

コンテナ操作

実行中のサービスコンテナに入ります。bash が入っていないコンテナ(Alpine Linux ベースなど)では sh を使います。

docker compose exec <サービス名> bash
docker compose exec <サービス名> sh

コンテナを起動せずに一時コンテナでコマンドを実行します。マイグレーションやシードの実行などに便利です。--rm を付けると実行後に自動で削除されます。

docker compose run --rm <サービス名> <コマンド>

ホストからコンテナにファイルをコピーします。設定ファイルの送り込みに使います。

docker compose cp <ホスト側パス> <サービス名>:<コンテナ側パス>

コンテナからホストにファイルをコピーします。ログファイルや設定ファイルの取り出しに使います。

docker compose cp <サービス名>:<コンテナ側パス> <ホスト側パス>

設定確認

compose.yml の内容を変数展開した状態で表示します。環境変数が正しく反映されているか確認するときに役立ちます。

docker compose config

定義されているサービス名の一覧を表示します。スクリプトからサービス名を取得したいときなどに使います。

docker compose config --services

停止/削除

実行中のコンテナを停止します。コンテナは削除されず、次回 up で再利用されます。

docker compose stop

コンテナを停止して削除します。ネットワークも合わせて削除されます。

docker compose down

ボリュームも含めて削除します。データも失われるため、使う際は注意が必要です。

docker compose down -v

まとめ

  • コンテナを動かすまでの基本的な流れは「ビルド → 起動 → 状態確認」です
  • コードや依存パッケージを更新したときはイメージをビルドし直しましょう
  • 問題が起きたときはログを確認し、コンテナ内部に入って調べましょう
  • データを初期化したいときはボリュームごと削除することができます