開始之前
爲什麼會有 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 nginx
與 docker image pull nginx
它們功能都是相同的。
我們需要做的就是找到並刪除這些名稱帶有 none
無效鏡像。
操作步驟
- 列出帶有
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
- 刪除無效鏡像
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
# ...省略
- 也可以使用 rmi 命令刪除
docker rmi `docker image ls -f dangling=true -q`
命令幫助
docker image
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]