Docker刪除鏡像Image的正確方式

前言

在docker生態中,可能會定時清理一些不必要或者不再使用的容器鏡像,釋放出資源空間,達到硬件服務資源的合理化利用。在清理的鏡像時,需要注意不能直接使用docker rmi <image-id>命令進行刪除,因爲有的容器使用該鏡像已經被創建,甚至還處於run狀態。正確的步驟應該是:先刪除容器,解開容器與鏡像間的依賴關係,確認後再刪除鏡像。

刪除容器

  1. 獲取容器ID
$ docker ps -a 
CONTAINER_ID     IMAGE COMMAND CREATED STATUS PORTS NAMES
f897a9b2edaf     mysql "docker-entrypoint.s…" 2 months ago Exited (0) 44 minutes ago walle-mysql
7abd9ec9d946     alenx/walle-web:2.1 "nginx -g 'daemon of…" 2 months ago Exited (0) 44 minutes ago walle-nginx

  1. 停止容器
$ docker stop <CONTAINER_ID>
  1. 刪除容器
$ docker rm <CONTAINER_ID>

刪除鏡像

  1. 獲取鏡像ID
$ docker images -a
REPOSITORY TAG     IMAGE_ID                CREATED       SIZE
mysql    latest    ed1ffcb5eff3         3 months ago     456MB
alenx/walle-web 2.1    23fbcbdad6ce     11 months ago    118MB

如果刪除untagged images ,可以使用命令docker images | grep "^<none>" | awk '{print $3}'

  1. 刪除鏡像
$ docker rmi <IMAGE_ID>

後記

這個過程其實蠻清晰的,主要是理清容器以及鏡像之間的依賴關係,其實也就是docker的生命週期的兩部分:鏡像(image)+容器(container),然後問題就迎刃而解了。

docker生命週期的組成部分:鏡像 image+容器 container+倉庫 registry

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章