为什么我新创建的docker没有摘要?
我一直在关注Docker教程,并通过对现有映像进行更改并用三个不同的标签对其进行标记,在本地OSX计算机上构建了测试映像:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
adamatan/sinatra devel fccb6b4d21b4 8 minutes ago 469.5 MB
adamatan/sinatra junk fccb6b4d21b4 8 minutes ago 469.5 MB
adamatan/sinatra latest fccb6b4d21b4 8 minutes ago 469.5 MB
但是,这些图像都没有摘要:
# docker images --digests adamatan/sinatra
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
adamatan/sinatra devel <none> fccb6b4d21b4 9 minutes ago 469.5 MB
adamatan/sinatra junk <none> fccb6b4d21b4 9 minutes ago 469.5 MB
adamatan/sinatra latest <none> fccb6b4d21b4 9 minutes ago 469.5 MB
我使用Dockerfile创建的其他测试映像也有摘要。
为什么有些图像有摘要,而有些则没有? 它与创建映像的方式(是否为Dockerfile)有关吗?
-
首先,请记住,摘要可以代表一个
manifest
,一个图层或它们的组合(我们通常将该组合称为图像)。Manifest
是Docker注册表V2引入的一个新术语。以下是从Docker Registry
V2幻灯片
page21〜page23中获取的简短说明:- [清单]描述单个对象中图像的组成
- 可以立即并行获取图层。
- 可以立即并行获取图层。
使用命令获取摘要时
docker images --digests
,摘要是图像清单的SHA256哈希,但是图像ID是本地图像JSON配置的哈希码(此配置与清单不同)。在这种情况下,如果图像没有关联的清单,则该图像的摘要将为“无”。通常,两种情况可能会使图像没有关联的清单:
- 该映像尚未推送到V2注册表或从V2注册表中提取。
- 该图像已从V1注册表中提取。
要生成清单,最简单的方法是将映像推送到V2注册表(V1注册表将不起作用)。Docker客户端将在本地生成清单,然后将其与图像层一起推送到注册表。向后拉图像时,图像将具有清单。
清单存在后,您的图像摘要不应为“无”。
- [清单]描述单个对象中图像的组成
-
为什么我的As400无法从新创建的成员别名中进行选择?
2021-04-20 关注 0 浏览46 1答案
-
Android SQLite-为什么每次都要重新创建我的数据库?
2021-05-10 关注 0 浏览74 1答案
-
创建错的表格我可以删除重新创建。
2022-05-22 关注 0 浏览14 1答案
-
Django 1.7迁移不会重新创建删除的表,为什么?
2021-01-29 关注 0 浏览73 1答案
-
为什么Jenkins Android模拟器插件会在每个版本中重新创建我的模拟器快照?
2021-01-31 关注 0 浏览218 1答案
-
为什么在重新启动线程时需要重新创建实例?
2021-01-29 关注 0 浏览81 1答案
-
如何使docker-compose始终从新映像重新创建容器?
2021-02-01 关注 0 浏览173 1答案
-
为什么NetBeans在部署时会重新创建“旧”软件包的文件夹?
2021-02-01 关注 0 浏览129 1答案
-
JSF 2.0:为什么即使仍在同一View上也要重新创建ViewScope Bean
2021-01-30 关注 0 浏览77 1答案
-
如何让 docker-compose 始终从新图像重新创建容器?
2022-05-26 关注 0 浏览19 1答案