ひとことで言うと

# コンテナとネットワークを停止・削除
docker compose down

# ボリュームも一緒に削除
docker compose down -v

# イメージも含めて全削除
docker compose down --rmi all -v

やりたかったこと / 現象

docker compose up で起動した環境を片付けたい。docker compose stop との違いがわからない。ボリュームも一緒に消したい。


環境

  • Docker Engine 24.x 以降
  • Docker Compose v2(docker compose コマンド)
  • OS: Ubuntu 22.04 / macOS / WSL2

注意: 旧来の docker-compose(v1)でも同じオプションが使えます。


解決策

基本の使い方

docker compose down

このコマンド1本で以下がまとめて実行されます:

  1. 実行中のコンテナを停止
  2. コンテナを削除
  3. Compose が作成したネットワークを削除

ボリューム・イメージは残ります

ボリュームも削除したい場合

docker compose down -v
# または
docker compose down --volumes

-v を付けると、docker-compose.ymlvolumes: セクションで定義した名前付きボリュームも削除されます。データベースのデータなど永続化データが消えるため注意してください。

イメージも削除したい場合

# Compose で使用したイメージをすべて削除
docker compose down --rmi all

# ローカルビルドしたイメージのみ削除
docker compose down --rmi local

全部まとめて削除(開発環境リセット)

docker compose down --rmi all -v

これで「コンテナ + ネットワーク + ボリューム + イメージ」をすべて削除できます。

特定のサービスだけ停止・削除

# web サービスのコンテナだけ削除
docker compose down web

タイムアウトを指定する

# 停止まで最大60秒待つ(デフォルト10秒)
docker compose down -t 60

docker compose stop との違い

コマンドコンテナ停止コンテナ削除ネットワーク削除
docker compose stop
docker compose down

stop は「一時停止」、down は「後片付けまで含めた終了」です。
再開するなら stopstart、環境を消すなら down を使います。


よくあるエラーと対処

Error response from daemon: removal of container ... is already in progress

別のプロセスが同じコンテナを操作中です。少し待ってから再実行してください。

# 強制削除が必要な場合
docker rm -f $(docker ps -aq)

network ... has active endpoints

ネットワークに他のコンテナが接続されています。

# 接続中のコンテナを確認
docker network inspect <network_name>

# 全コンテナを停止してから再実行
docker compose down

volume is in use

ボリュームが別のコンテナに使われています。

# ボリュームを使用中のコンテナを確認
docker ps -a --filter volume=<volume_name>

# コンテナを削除してからボリュームを削除
docker compose down -v

Permission denied(ソケットエラー)

sudo docker compose down
# または docker グループに自分を追加
sudo usermod -aG docker $USER

よくある質問

Q: docker compose downdocker compose rm の違いは何ですか?
down はコンテナの停止→削除→ネットワーク削除まで一括で行います。rm停止済みコンテナのみを削除する(停止はしない)コマンドです。

Q: ボリュームを削除し忘れました。後から消せますか?
はい。docker volume ls で名前を確認して docker volume rm <名前> で削除できます。使われていないボリュームをまとめて消す場合は docker volume prune も使えます。

Q: down 後にデータが消えていました。なぜですか?
-v オプションを付けていた場合、名前付きボリュームも削除されます。また、docker-compose.yml でボリュームを定義せずにコンテナ内にデータを書いていた場合も、コンテナ削除とともにデータは消えます。

Q: docker compose down してもイメージは残りますか?
デフォルトではイメージは残ります。イメージも削除したい場合は --rmi all オプションを追加してください。

Q: docker-compose.yml が複数ある場合はどうしますか?
-f オプションでファイルを指定できます。

docker compose -f docker-compose.prod.yml down

Q: 停止せずにコンテナだけ削除できますか?
docker compose down は内部で自動的に停止してから削除するので、実行中のコンテナがあっても安全に使えます。


関連記事

おすすめのVPS/ドメイン/スクール

VPSを使って本番環境を構築するなら、以下のサービスがおすすめです。