目次
docker rm コマンド入門:コンテナの削除(-f、-v、container prune)
docker rm は停止済みのコンテナを削除します。実行中のコンテナは -f で強制削除できます。コンテナの作成、停止、削除までの流れはコンテナのライフサイクルを参照してください。
構文
docker rm [オプション] コンテナ [コンテナ...]
オプション
| オプション | 説明 |
|---|---|
-f, --force | 実行中のコンテナを強制削除します(SIGKILL を使用) |
-l, --link | 指定したリンクを削除します |
-v, --volumes | コンテナに関連付けられた匿名 Volume も削除します |
--filter 条件 | コンテナを絞り込みます。例:until=<timestamp> |
docker container prune はすべての停止済みコンテナを削除します。-f を付けると確認を省略できます。
例
停止済みと実行中のコンテナを削除する
$ docker rm app
Error response from daemon: cannot remove container "app": container is running: stop the container before removing or force remove
$ docker rm -f app
app
$ docker rm job
job
- 実行中の
appはそのままでは削除できません。エラーメッセージは、先に停止するか強制削除するよう案内しています。 docker rm -f appは実行中のコンテナを正常に削除し、コンテナ名appを出力します。- 停止済みの
jobは-fを付けずに削除できます。
匿名 Volume も一緒に削除する
$ docker volume ls -q | wc -l
2
$ docker rm -f -v withvol
withvol
$ docker volume ls -q | wc -l
1
- 削除前は Volume が 2 個あります。
-vを付けてwithvolを削除すると、1 個になります。 -vはコンテナに関連付けられた匿名 Volume を削除するオプションです。
停止済みのコンテナをすべて整理する
$ docker ps -a --format '{{.Names}} {{.Status}}'
old2 Exited (0) Less than a second ago
old1 Exited (0) 1 second ago
registry Up About a minute
$ docker container prune -f
Deleted Containers:
1634aa3747102ed4016d3695d9fbe33f9ff7310fde9c5726ef86a340f8d22acb
a3ec6e520acc56ef9f9d78452b104675b7afd070a8e9bd1ab0a010b34e2fe8a5
Total reclaimed space: 8.192kB
- 削除前には、停止済みの
old2、old1と、実行中のregistryがあります。 docker container prune -fは確認を求めず、削除したコンテナの ID と回収した容量を出力します。- このコマンドは停止済みコンテナを削除します。実行中の
registryは削除対象に含まれません。
コマンド置換の結果がない場合
$ docker rm $(docker ps -aq --filter status=exited)
docker: 'docker rm' requires at least 1 argument
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER...]
See 'docker rm --help' for more information
docker ps -aq --filter status=exitedの出力がない場合、コマンド置換からコンテナ引数は渡されません。- そのため
docker rmは少なくとも 1 つの引数が必要だというエラーを返します。一括整理にはdocker container prune -fを使えます。
コンテナの終了後に自動削除する
$ docker run --rm alpine:3.23 echo 'removed when done'
removed when done
$ docker ps -a --format '{{.Names}} {{.Status}}'
registry Up About a minute
--rmを付けると、コマンドの終了後にコンテナが自動削除されます。- 次のコンテナ一覧には実行中の
registryだけが表示され、直前に実行したコンテナは表示されません。
関連する章
- コンテナのライフサイクル
- docker ps:コンテナの一覧表示と絞り込み
- docker stop:実行中のコンテナを停止する
- Docker Volume:Volume を管理する
練習問題
練習:実行中の app コンテナを強制削除し、関連付けられた匿名 Volume も一緒に削除してください。
解答
docker rm -f -v app
よくある質問
docker rm で実行中のコンテナを削除できないのはなぜですか?
実行中のコンテナは先に停止するか、docker rm -f で強制削除する必要があります。-f は SIGKILL を使用します。
コンテナの削除時に匿名 Volume も一緒に削除するにはどうすればよいですか?
-v を付けます。例:docker rm -f -v withvol。この例では Volume の数が 2 個から 1 個に減ります。
停止済みコンテナが見つからない場合、コマンド置換はどうなりますか?
docker rm $(docker ps -aq --filter status=exited) はコンテナ名または ID が渡されないため、少なくとも 1 つの引数が必要だというエラーを返します。
コンテナの終了時に自動削除するにはどうすればよいですか?
docker run --rm を実行します。この例では、コンテナの実行後に docker ps -a で表示されなくなります。
更新日 2026年10月26日