Docker 刪除 清理映象

2022-06-15 08:12:10 字數 1895 閱讀 6410

文章首發自個人**:

本文中,您將學習 docker 如何刪除及清理映象?

通過如下兩個都可以刪除映象:

docker rmi [image]
或者:

docker image rm [image]
支援的子命令如下:

例如,我們想刪除上章節建立的allen_mysql:5.7映象,命令如下:

docker rmi allen_mysql:5.7
從上面章節中,我們知道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.io/mysql:5.7映象依然存在!

那麼,如果某個映象不存在多個標籤,當且僅當只有乙個標籤時,執行刪除命令時,您就要小心了,這會徹底刪除映象。

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

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

除了通過標籤名稱來刪除映象,我們還可以通過制定映象 id, 來刪除映象,如:

docker rmi ee7cbd482336
一旦制定了通過 id 來刪除映象,它會先嘗試刪除所有指向該映象的標籤,然後在刪除映象本身。

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

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

接下來,我們來刪除這個映象試試:

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

docker rmi -f docker.io/alpine
先刪除引用這個映象的容器;

再刪除這個映象;

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

docker rm 9d59e2278553
然後,再執行刪除映象的命令:

docker rmi 5cb3aa00f899
這個時候,就能正常刪除了!

我們在使用 docker 一段時間後,系統一般都會殘存一些臨時的、沒有被使用的映象檔案,可以通過以下命令進行清理:

docker image prune
它支援的子命令有:

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

mysql binlog日誌刪除清理

刪除mysql的binlog日誌有兩種方法 自動刪除和手動刪除 修改mysql的配置檔案my.cnf,新增binlog過期時間的配置項 expire logs days 30,然後重啟mysql,這個有個致命的缺點就是需要重啟mysql。expire logs days引數只支援整數,且範圍是 0,...

docker映象清理

在docker中如果要清理映象,比如有某個映象要刪除,可以使用命令 docker rmi imageid imagename 作用 根據映象id或名稱刪除映象 在刪除映象的時候同時會將映象存放在檔案系統中的元資料和映象層都刪除,從而釋放儲存空間。但有時候如果發現本地的儲存空間不夠用了,映象造成的原因...

Docker 映象清理命令

殺死所有正在執行的容器 docker kill docker ps a q 刪除所有已經停止的容器 docker rm docker ps a q 刪除所有未打 dangling 標籤的映象 docker rmi docker images q f dangling true 通過映象的id來刪除指...