搜尋
首頁運維Docker如何清理docker佔用的資源

如何清理docker佔用的資源

Jan 29, 2021 am 11:37 AM
docker資源

如何清理docker佔用的資源

前言:

經常使用docker的朋友都知道,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佔用的資源

安全起見,這個指令預設不會刪除那些未被任何容器引用的資料卷,如果需要同時刪除這些資料卷,你需要顯式的指定--volumns 參數。例如你可能想要執行下面的指令:

$ docker system prune --all --force --volumes

這次不只會刪除資料卷,而且連確認的過程都沒有了!請注意,使用 --all 參數後會刪除所有未被引用的鏡像而不僅僅是 dangling 鏡像。
這裡有必要解釋一下何為 dangling images,其實可以簡單的理解為未被任何鏡像引用的鏡像。例如在你重新建構了鏡像後,那些先前建構的且不再被引用的鏡像層就變成了dangling images:

如何清理docker佔用的資源

在本地的鏡像更新之後,就會出現類似圖中紅色框內的 鏡像。這表示舊的鏡像已經不再被引用了,此時它們就變成了 dangling images。如果使用-a 參數,你還會發現另外一種類型的 鏡像,它們的repository 和tag 列都表現為

如何清理docker佔用的資源

這些鏡像被稱為intermediate 鏡像(就是其它鏡像依賴的層)。

我們還可以在不同在子指令下執行prune,這樣刪除的就是某類資源:

docker container prune # 删除所有退出状态的容器
docker volume prune # 删除未被使用的数据卷
docker image prune # 删除 dangling 或所有未被使用的镜像

讓docker 回到安裝時的狀態

這裡的"安裝時的狀態" 指資源佔用情況而不是docker 的相關配置。這也是比較常見的用例,例如筆者就需要在一個乾淨的 docker 環境中自動化的還原出某天的一個生產環境(使用生產環境的備份資料)用於 bug 調查。讓我們一起來看看都需要做些什麼?
回想我們前面介紹的 docker system prune --all --force --volumns 指令,如果在執行這個指令前系統中所有的容器都已停止,那麼這個指令就會移除所有的資源!好,現在讓我們想辦法停止系統中的所有容器。

docker container stop 指令可以停止一個或多個容器,我們只需要把系統中所有在運作的容器羅列出來就可以了。由於 docker 並不介意我們再次停止一個已經停止了的容器,乾脆簡單粗暴點,直接列出所有的容器(包括已經停止的)!

$ docker container ls -a -q

如何清理docker佔用的資源

-a 顯示所有的容器,-q 只顯示數字形式的容器 ID。
然後把這裡指令執行的結果當作docker container stop 指令的參數:

$ docker container stop $(docker container ls -a -q)

完整的恢復docker 環境的指令如下:

$ docker container stop $(docker container ls -a -q) && docker system prune --all --force --volumns

和前面的prune 指令類似,也可以完全刪除某一類資源:
刪除容器:docker container rm $(docker container ls -a -q)
刪除映像:docker image rm $(docker image ls -a -q)
刪除數據卷:docker volume rm $(docker volume ls -q)
刪除network:docker network rm $(docker network ls -q)

建立shell 別名

上面的指令可以完成任務但是卻很繁瑣,我們可以透過shell 的別名功能來簡化這些指令的執行。

alias docker-clean-unused='docker system prune --all --force --volumes'alias docker-clean-all='docker stop $(docker container ls -a -q) && docker system prune --all --force --volumes'

把上面的命令写入到用户的 ~/.bashrc 文件中就可以了!

如何清理docker佔用的資源

执行一次清理任务:

如何清理docker佔用的資源

总结

经常清理系统资源不仅能够让系统运行的更流畅,也利于我们把精力集中在相关的重点资源上面。所以建议大家能够使用相关的资源清理命令,让 docker 保持清爽和高效。

相关推荐:docker入门教程

以上是如何清理docker佔用的資源的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
Docker在行動:現實世界中的示例和用例Docker在行動:現實世界中的示例和用例Apr 24, 2025 am 12:10 AM

Docker在實際項目中的應用場景包括簡化部署、管理多容器應用和性能優化。 1.Docker簡化了應用部署,如使用Dockerfile部署Node.js應用。 2.DockerCompose管理多容器應用,如微服務架構中的Web和數據庫服務。 3.性能優化使用多階段構建減小鏡像大小,並通過健康檢查監控容器狀態。

Docker vs. Kubernetes:用例和方案Docker vs. Kubernetes:用例和方案Apr 23, 2025 am 12:11 AM

在小型項目或開發環境中選擇Docker,在大型項目或生產環境中選擇Kubernetes。 1.Docker適合快速迭代和測試,2.Kubernetes提供強大的容器編排能力,適合管理和擴展大型應用。

Linux上的Docker:Linux系統的容器化Linux上的Docker:Linux系統的容器化Apr 22, 2025 am 12:03 AM

Docker在Linux上重要,因為Linux是其原生平台,提供了豐富的工具和社區支持。 1.安裝Docker:使用sudoapt-getupdate和sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io。 2.創建和管理容器:使用dockerrun命令,如dockerrun-d--namemynginx-p80:80nginx。 3.編寫Dockerfile:優化鏡像大小,使用多階段構建。 4.優化和調試:使用dockerlogs和dockerex

Docker:容器化工具,Kubernetes:編排者Docker:容器化工具,Kubernetes:編排者Apr 21, 2025 am 12:01 AM

Docker是容器化工具,Kubernetes是容器編排工具。 1.Docker打包應用及其依賴成容器,可在任何支持Docker的環境中運行。 2.Kubernetes管理這些容器,實現自動化部署、擴展和管理,使應用高效運行。

Docker的目的:簡化應用程序部署Docker的目的:簡化應用程序部署Apr 20, 2025 am 12:09 AM

Docker的目的是簡化應用部署,通過容器化技術確保應用在不同環境中一致運行。 1)Docker通過將應用和依賴打包到容器中,解決了環境差異問題。 2)使用Dockerfile創建鏡像,確保應用在任何地方一致運行。 3)Docker的工作原理基於鏡像和容器,利用Linux內核的命名空間和控制組實現隔離和資源管理。 4)基本用法包括從DockerHub拉取並運行鏡像,高級用法涉及使用DockerCompose管理多容器應用。 5)常見錯誤如鏡像構建失敗和容器無法啟動,可通過日誌和網絡配置調試。 6)性能優化建

Linux和Docker:不同Linux發行版的DockerLinux和Docker:不同Linux發行版的DockerApr 19, 2025 am 12:10 AM

在Ubuntu、CentOS和Debian上安裝和使用Docker的方法各有不同。 1)Ubuntu:使用apt包管理器,命令為sudoapt-getupdate&&sudoapt-getinstalldocker.io。 2)CentOS:使用yum包管理器,需添加Docker倉庫,命令為sudoyuminstall-yyum-utils&&sudoyum-config-manager--add-repohttps://download.docker.com/lin

掌握Docker:Linux用戶指南掌握Docker:Linux用戶指南Apr 18, 2025 am 12:08 AM

在Linux上使用Docker可以提高開發效率和簡化應用部署。 1)拉取Ubuntu鏡像:dockerpullubuntu。 2)運行Ubuntu容器:dockerrun-itubuntu/bin/bash。 3)創建包含nginx的Dockerfile:FROMubuntu;RUNapt-getupdate&&apt-getinstall-ynginx;EXPOSE80。4)構建鏡像:dockerbuild-tmy-nginx.。 5)運行容器:dockerrun-d-p8080:80

Linux上的Docker:應用和用例Linux上的Docker:應用和用例Apr 17, 2025 am 12:10 AM

Docker在Linux上可以簡化應用部署和管理。 1)Docker是容器化平台,將應用及其依賴打包進輕量、可移植容器。 2)在Linux上,Docker利用cgroups和namespaces實現容器隔離和資源管理。 3)基本用法包括拉取鏡像和運行容器,高級用法如DockerCompose可定義多容器應用。 4)調試常用dockerlogs和dockerexec命令。 5)性能優化可通過多階段構建減小鏡像大小,保持Dockerfile簡潔是最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。