Docker 镜像使用全解析
1. 镜像层共享与拉取
1.1 镜像层共享
在镜像仓库端,镜像层是可以共享的。这意味着在仓库中存储大量相似镜像时,仓库不会重复存储相同的层,从而节省了存储空间。
1.2 按标签拉取镜像的问题
通常我们使用名称(标签)来拉取和操作镜像,这是最常见的方法。但标签是任意且可变的,可能会错误地标记镜像,或者给新镜像使用与旧镜像相同的标签。例如, alpine:latest 标签,一年前拉取的和现在拉取的可能不是同一个镜像。
假设我们有一个名为 golftrack:1.5 的镜像,发现它存在严重漏洞。我们构建了一个修复后的新镜像,并使用相同的标签推送到同一仓库。这样会覆盖原始镜像,导致无法区分生产环境中哪些容器使用的是有漏洞的镜像,哪些使用的是修复后的镜像,因为它们标签相同。
1.3 按摘要拉取镜像
Docker 使用内容可寻址存储模型,每个镜像都有一个加密内容哈希,即摘要。不同的镜像不可能有相同的摘要,修改镜像也会生成新的摘要。因此,我们可以使用摘要来拉取镜像,确保每次拉取的都是预期的镜像。
如果已经按名称拉取了镜像,可以使用以下命令查看其摘要:
$ docker images --digests alpine
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
alpine latest
超级会员免费看
订阅专栏 解锁全文
601

被折叠的 条评论
为什么被折叠?



