Docker 刪除&清理鏡像


執行刪除前,先把該鏡像運行的容器關掉,再刪除容器,最后刪除鏡像,方可順利進行

#關掉容器
docker stop 容器ID

  

# 移除容器
docker rm 容器ID
# 刪除鏡像
docker rmi 鏡像ID(或)鏡像標簽

一、通過標簽刪除鏡像

通過如下兩個都可以刪除鏡像:

docker rmi [image]

或者:

docker image rm [image]

支持的子命令如下:

  • -f, -force: 強制刪除鏡像,即便有容器引用該鏡像;
  • -no-prune: 不要刪除未帶標簽的父鏡像;
 
Docker 查看鏡像信息

例如,我們想刪除上章節創建的 allen_mysql:5.7 鏡像,命令如下:

docker rmi allen_mysql:5.7
 
Docker 刪除鏡像

從上面章節中,我們知道 allen_mysql:5.7docker.io/mysql:5.7 實際上指向的是同一個鏡像,那么,您可以能會有疑問,我刪除了 allen_mysql:5.7, 會不會將 docker.io/mysql:5.7 鏡像也給刪除了?

實際上,當同一個鏡像擁有多個標簽時,執行 docker rmi 命令,只是會刪除了該鏡像眾多標簽中,您指定的標簽而已,並不會影響原始的那個鏡像文件。

不信的話,我們可以執行 docker images 命令,來看下 docker.io/mysql:5.7 鏡像還在不在:

 
Docker 查看鏡像信息

可以看到,docker.io/mysql:5.7 鏡像依然存在!

那么,如果某個鏡像不存在多個標簽,當且僅當只有一個標簽時,執行刪除命令時,您就要小心了,這會徹底刪除鏡像。

例如,這個時候,我們再執行 docker rmi docker.io/mysql:5.7 命令:

 
Docker 刪除鏡像

從上圖可以看到,我們已經刪除了 docker.io/mysql:5.7 鏡像的所有文件層。該鏡像在本地已不復存在了!

二、通過 ID 刪除鏡像

除了通過標簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:

docker rmi ee7cbd482336

一旦制定了通過 ID 來刪除鏡像,它會先嘗試刪除所有指向該鏡像的標簽,然后在刪除鏡像本身。

三、刪除鏡像的限制

刪除鏡像很簡單,但也不是我們何時何地都能刪除的,它存在一些限制條件。

當通過該鏡像創建的容器未被銷毀時,鏡像是無法被刪除的。為了驗證這一點,我們來做個試驗。首先,我們通過 docker pull alpine 命令,拉取一個最新的 alpine 鏡像, 然后啟動鏡像,讓其輸出 hello, docker!:

 
Docker run alpine

接下來,我們來刪除這個鏡像試試:

 
Docker 刪除鏡像

可以看到提示信息,無法刪除該鏡像,因為有容器正在引用他!同時,這段信息還告訴我們,除非通過添加 -f 子命令,也就是強制刪除,才能移除掉該鏡像!

docker rmi -f docker.io/alpine

但是,我們一般不推薦這樣暴力的做法,正確的做法應該是:

  1. 先刪除引用這個鏡像的容器;
  2. 再刪除這個鏡像;

也就是,根據上圖中提示的,引用該鏡像的容器 ID (9d59e2278553), 執行刪除命令:

docker rm 9d59e2278553

然后,再執行刪除鏡像的命令:

docker rmi 5cb3aa00f899
 
Docker 刪除鏡像

這個時候,就能正常刪除了!

四、清理鏡像

我們在使用 Docker 一段時間后,系統一般都會殘存一些臨時的、沒有被使用的鏡像文件,可以通過以下命令進行清理:

docker image prune

它支持的子命令有:

  • -a, --all: 刪除所有沒有用的鏡像,而不僅僅是臨時文件;
  • -f, --force:強制刪除鏡像文件,無需彈出提示確認;

另外,執行完 docker image prune 命令后,還是告訴我們釋放了多少存儲空間!

五、總結

本文中,我們知道了 Docker 中如何刪除以及清理鏡像,通過標簽和通過 ID 來刪除鏡像的相關細節,刪除鏡像又存在哪些限制等。



作者:犬小哈
鏈接:https://www.jianshu.com/p/05d0c77d26d3
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM