Dockerを使っていると、使わなくなったコンテナがどんどん増えていきます。
「docker ps -a
がごちゃごちゃして見づらい…」
「容量を圧迫している…」
そんなときは不要なコンテナを削除してスッキリさせましょう。
この記事では、Dockerコンテナを削除する方法を、状態別(停止中・実行中)や一括削除も含めてわかりやすく解説します。
コンテナ削除の前に知っておくべき基本

Dockerコンテナは、その状態によって削除方法が異なります。
削除操作を行う前に、いくつかの基本的な概念を理解しておきましょう。
コンテナの状態について
状態 | 表示 | 削除可否 | 備考 |
---|---|---|---|
停止中 | Exited | 通常の削除可能 | 標準的な削除対象 |
実行中 | Up | 通常は削除不可 | 強制オプションが必要 |
一時停止中 | Paused | 通常は削除不可 | 再開か強制削除が必要 |
起動失敗 | Created | 削除可能 | 不完全な状態のコンテナ |
コンテナとイメージの違い
初心者がよく混乱するのが、コンテナとイメージの違いです。
- イメージ: アプリケーションとその依存関係を含む読み取り専用のテンプレート
- コンテナ: イメージから作成された実行可能なインスタンス
イメージの削除には docker rmi
を使いますが、この記事ではコンテナの削除 docker rm
に焦点を当てています。
停止中のコンテナを削除する

停止中のコンテナは、最も基本的なケースです。
基本コマンド
docker rm コンテナ名またはID
例
docker rm my-nginx
このコマンドで、my-nginx
という名前のコンテナが削除されます(停止している場合)。
IDを使った削除例
docker rm a1b2c3d4e5f6
コンテナIDは長いので、先頭数文字だけで指定することも可能です:
docker rm a1b2c3
複数のコンテナを同時に削除
スペースで区切って複数指定できます:
docker rm my-nginx my-mysql my-redis
または、IDを並べる:
docker rm a1b2c3 d4e5f6 g7h8i9
削除の確認
削除が成功すると、削除されたコンテナのIDまたは名前が表示されます:
my-nginx
削除に失敗した場合(例:実行中のコンテナ)はエラーメッセージが表示されます:
Error response from daemon: You cannot remove a running container. Stop the container before attempting removal or force remove
実行中のコンテナを強制削除する方法

基本的に、実行中のコンテナは保護のために直接削除できません。しかし、緊急時や開発環境では強制削除が必要なことがあります。
強制削除コマンド
docker rm -f コンテナ名またはID
-f
または --force
オプションを使うことで、実行中のコンテナを強制的に停止してから削除します。
例
docker rm -f my-app
これにより、my-app
という名前のコンテナが実行中であっても強制的に停止され、削除されます。
注意点
強制削除は、コンテナが正常なシャットダウン処理を行う時間を与えません。そのため:
- 書き込み中のデータが破損する可能性がある
- アプリケーションの終了処理が実行されない
- 依存関係のあるコンテナへの影響がある場合がある
可能であれば、まず docker stop
で正常に停止してから削除する方が安全です:
docker stop my-app
docker rm my-app
すべてのコンテナを一括削除する方法

たくさんのコンテナを整理したい場合、一括削除が便利です。
停止中のコンテナだけを一括削除
docker container prune
実行すると確認メッセージが表示されます:
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N]
y
と入力して Enter キーを押すと、停止中のコンテナがすべて削除されます。
実行中も含めてすべてのコンテナを削除する(危険)
docker rm -f $(docker ps -aq)
このコマンドは:
docker ps -aq
ですべてのコンテナIDを取得docker rm -f
で、それらをすべて強制削除
フィルタを使った選択的な一括削除
特定の条件に合うコンテナだけを削除したい場合:
# 3日以上前に終了したコンテナを削除
docker container prune --filter "until=72h"
# 特定のラベルが付いたコンテナだけを削除
docker rm $(docker ps -a --filter "label=environment=test" -q)
名前やIDを確認する便利なコマンド
削除前に、どのコンテナを削除するか確認することが重要です。
現在起動中のコンテナを確認
docker ps
すべてのコンテナ(停止中も含む)を確認
docker ps -a
削除対象を絞り込んで確認
# 名前で絞り込み
docker ps -a --filter "name=nginx"
# 特定のイメージから作られたコンテナを表示
docker ps -a --filter "ancestor=mysql:5.7"
# 終了ステータスが0以外(エラー終了)のコンテナを表示
docker ps -a --filter "exited=1"
表示を簡略化する
# IDと名前だけを表示
docker ps -a --format "{{.ID}}: {{.Names}}"
# 整形された表でステータスと名前を表示
docker ps -a --format "table {{.Names}}\t{{.Status}}"
コンテナ削除時の注意点

コンテナを削除する際は、以下の点に注意しましょう。
データの消失
重要: コンテナを削除すると、コンテナ内に保存されていたデータはすべて失われます。データを保持したい場合は、Dockerボリュームを使用するか、削除前にデータをバックアップしてください。
# ボリュームを使用するコンテナの例
docker run -v my_data:/app/data nginx
停止と削除の違い
コンテナの停止は一時的な処理の中断、削除は完全な破棄です:
- 停止(
docker stop
):コンテナのプロセスを終了するが、構成や状態は保持される - 削除(
docker rm
):コンテナの構成、状態、内部データをすべて破棄する
関連リソースの削除
コンテナを削除しても、関連するボリュームやネットワークは自動的には削除されません。必要に応じて手動で削除します:
# 未使用ボリュームを削除
docker volume prune
# 未使用ネットワークを削除
docker network prune
docker-compose環境でのコンテナ削除
docker-compose
を使っている場合は、独自のコマンドを使うのが安全です:
# docker-composeで管理されているコンテナを停止して削除
docker-compose down
# ボリュームも含めて完全に削除する場合
docker-compose down -v
まとめ
不要なコンテナを削除すれば、ストレージの節約や操作の整理にもつながります。
ポイント:
docker rm コンテナ名/ID
で停止中のコンテナを削除-f
オプションで実行中のコンテナも強制削除可能docker container prune
で停止中のコンテナを一括削除- 削除前に
docker ps -a
で対象を確認するのが安全 - コンテナ内のデータは削除すると失われるので注意
便利な使い方例:
# 開発作業終了時のクリーンアップ
docker stop $(docker ps -q) # すべてのコンテナを停止
docker container prune # 停止したコンテナを削除
# 特定のパターンにマッチするコンテナだけを削除
docker rm $(docker ps -a | grep "pattern" | awk '{print $1}')
# システムの全体クリーンアップ(開発環境向け)
docker system prune -a # 未使用のコンテナ、イメージ、ネットワーク、ボリュームをすべて削除
コンテナの整理は、Docker運用をスムーズにする大切な作業です。定期的に実行して、クリーンな開発環境を維持しましょう!
コメント