docker pull busybox@sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51e
# sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51e: Pulling from library/busybox
# Digest: sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51e
# Status: Image is up to date for #busybox@sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51e
# docker.io/library/busybox@sha256:fe301db49df08c384001ed752dff6d52b4305a73a7f608f21528048e8a08b51e
2条答案
按热度按时间oewdyzsn1#
简短的回答:是的,新的标签“覆盖”了前一个标签
较长的答案:标签的工作方式有点类似于Git中的标签;标签引用图像的特定版本(内容可寻址摘要),并且可以被更新以指向不同的版本。
覆盖标签时,旧图像本身不会被覆盖,但标签现在指向您推送的图像的新版本。如果您通过其摘要引用旧映像,则仍然可以提取(并运行)旧映像。
例如,当你拉取
busybox:latest
图像时,你会看到它的摘要在拉取后打印出来:因此,除了上面的方法,你也可以通过 digest 来提取图像:
虽然新版本的
busybox:latest
镜像可能会出现在Docker Hub上,但如果您知道它们的摘要,您仍然可以运行旧版本;rbl8hiat2#
如Manifest摘要部分所述,使用现有标记推送修改后的图像取消标记先前推送的图像,导致孤立(或“悬空”)图像。以前推送的映像清单及其层数据仍保留在注册表中。考虑以下事件顺序:
1.推送图片 acr-helloworld,标签为latest:
docker push myregistry.azurecr.io/acr-helloworld:latest
1.检查存储库 acr-helloworld 的清单:
Azure CLI
输出
1.修改 acr-helloworld Dockerfile
1.推送图片 acr-helloworld,标签为latest:
docker push myregistry.azurecr.io/acr-helloworld:latest
1.检查存储库 acr-helloworld 的清单:
Azure CLI
输出
当图像未标记时,标记数组将从元数据中删除。此清单仍然存在于注册表中,沿着它引用的任何唯一层数据。要删除此类孤立镜像及其图层数据,必须按清单摘要删除。
上面的文章来自Azure Container Registry。