目錄
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
- 刪除前列出 2 個 Volume;以
-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因此回報至少需要一個引數;批次清理可改用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 而回報至少需要一個引數。
如何在容器結束時自動刪除它?
執行 docker run --rm;範例中的容器執行完後,docker ps -a 不再列出它。
更新於 2026年10月26日