如何刪除無效的<none>Docker鏡像?

如何刪除無效的<none>Docker鏡像?

開始之前

爲什麼會有 none 這樣命名的鏡像?
這些鏡像 docker 稱爲 虛懸鏡像,當鏡像被新的鏡像覆蓋時候,老版本鏡像名稱會變成 none

例如當前docker宿主機已經存在 nginx:latest 鏡像,而不久後 docker hub 推送了新版的 nginx 鏡像。

當你再次 docker pull nginx:latest 下載鏡像時,老版本鏡像被覆蓋名稱也將變成 none

另外一個需要注意問題的是 從 docker 1.13.1 版本開始引入 docker image 命令,新命令集成了 list、rm、build、tag、push、pull, 等功能,用於替代 images 、build 、rmi 、tag 等二級命令。

考慮到兼容性新版本的 docker 仍然可以使用這些舊的二級子命令,例如 docker pull nginxdocker image pull nginx 它們功能都是相同的。

我們需要做的就是找到並刪除這些名稱帶有 none 無效鏡像。

操作步驟

  1. 列出帶有 none 字符的鏡像
docker images -f dangling=true | head -n 3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              d31c5d38836d        3 days ago          1.03GB
<none>              <none>              10d22b8d83b3        6 days ago          1.03GB

# 這兩個命令功能相同
docker image ls -f dangling=true | head -n 3
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              d31c5d38836d        3 days ago          1.03GB
<none>              <none>              10d22b8d83b3        6 days ago          1.03GB
  1. 刪除無效鏡像
docker image prune

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:d..省略..3e5c4918ee576d729a4b
# ...省略
  1. 也可以使用 rmi 命令刪除
docker rmi `docker image ls -f dangling=true -q`

命令幫助

docker image

如何刪除無效的<none>Docker鏡像?

docker rmi -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images

Options:
  -f, --force      Force removal of the image
      --no-prune   Do not delete untagged parents

小結

最後來總結下文章中的知識點

  • 虛懸鏡像,當鏡像被新的鏡像覆蓋時候,老版本鏡像名稱會變成 none
  • 可以使用 docker image prune 命令刪除 懸壺鏡像。
  • 對於新同學來說,雖然新舊命令功能相同,但是建議掌握新命令使用方法。

參考文章

doker&k8s Qun [703906133]

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