目錄
- 清除docker無用鏡像
- 一、查看 docker 占用的資源
- 二、只刪除那些未被使用的資源
- 1、通過標簽刪除鏡像
- 2、通過 ID 刪除鏡像
- 3、刪除鏡像的限制
- 4、清理鏡像
- PS:docker 批量刪除無用的容器或鏡像
清除docker無用鏡像
一、查看 docker 占用的資源
在進行資源清理之前我們有必要搞清楚 docker 都占用了哪些系統的資源。這需要綜合使用不同的命令來完成。
docker container ls:默認只列出正在運行的容器,-a 選項會列出包括停止的所有容器。
docker image ls:列出鏡像信息,-a 選項會列出 intermediate 鏡像(就是其它鏡像依賴的層)。
docker volume ls:列出數據卷。
docker network ls:列出 network。
docker info:顯示系統級別的信息,比如容器和鏡像的數量等。
通過這些命令查看 docker 使用的資源情況后,相信你已經決定要清理 docker 占用的一些資源了!讓我們先從那些未被使用的資源開始。
二、只刪除那些未被使用的資源
Docker 提供了方便的 docker system prune 命令來刪除那些已停止的容器、dangling 鏡像、未被容器引用的 network 和構建過程中的 cache:
$ docker system prune
使用以下命令清理已經停止運行的docker容器
docker rm $(docker ps --all -q -f status=exited)
1、通過標簽刪除鏡像
通過如下兩個都可以刪除鏡像:
docker rmi [image]
或者:
docker image rm [image]
支持的子命令如下:
-f, -force
: 強制刪除鏡像,即便有容器引用該鏡像;-no-prune
: 不要刪除未帶標簽的父鏡像;
2、通過 ID 刪除鏡像
除了通過標簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:
docker rmi ID
一旦制定了通過 ID 來刪除鏡像,它會先嘗試刪除所有指向該鏡像的標簽,然后在刪除鏡像本身。
3、刪除鏡像的限制
- 先刪除引用這個鏡像的容器;
- 再刪除這個鏡像;
也就是,根據上圖中提示的,引用該鏡像的容器 ID, 執行刪除命令:
docker rm ID
然后,再執行刪除鏡像的命令:
docker rmi ID
4、清理鏡像
我們在使用 Docker 一段時間后,系統一般都會殘存一些臨時的、沒有被使用的鏡像文件,可以通過以下命令進行清理:
docker image prune
它支持的子命令有:
-a, --all
: 刪除所有沒有用的鏡像,而不僅僅是臨時文件;-f, --force
:強制刪除鏡像文件,無需彈出提示確認;
PS:docker 批量刪除無用的容器或鏡像
docker rm `docker ps -a | grep Exited | awk '{print $1}'` 刪除異常停止的docker容器
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'` 刪除名稱或標簽為none的鏡像