假设您有先前版本的标签/标识符和/或本地图像缓存中有一个版本,则可以通过以下方式找到要与pull by digest一起使用的摘要docker image inspect:
$ docker image inspect --format "{{.RepoDigests}}" alpine:3.6
[alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab]
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我正在查看alpine图像的3.6标签,响应是一个字符串,我可以使用如下命令:docker pull
$ docker pull alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab
sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab: Pulling from library/alpine
Digest: sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab
Status: Image is up to date for alpine@sha256:b40e202395eaec699f2d0c5e01e6d6cb8e6b57d77c0e0221600cf0b5940cf3ab
Run Code Online (Sandbox Code Playgroud)
您的特定图像的潜在问题是,该latest标记似乎已用于您的所有构建,因此除非您有旧图像的本地缓存,否则可能很难找到对先前构建的旧sha256摘要引用。
如果本地缓存信息尚未通过docker system prune或其他清理实用程序删除,则有几种可能的方法可以找到先前图像的摘要:
docker images -a | grep <image name>可用于显示所有图像,包括未标记的图像。下面的示例显示了更新后的ubuntu:latest,我仍然可以访问旧图像。使用该 ID(不是摘要),我可以使用它docker image inspect --format '{{.RepoDigests}}' <image ID>来检索较旧的 ubuntu“构建”的实际摘要。
如果我有一个容器正在运行或使用先前版本的图像退出,我可以通过首先检查容器并找到图像 ID 来找到该图像的摘要,然后如上所述检查该图像 ID并检索旧图像的消化。在这个有点人为的例子中,我有一个退出的容器1edd..,我检查它以找到图像 ID,它恰好仍然被有效标记,但是使用它的id我可以image inspect用来获取摘要,即使它不是不再标记在我的图像缓存中。
示例 1:
$ docker images -a | grep ubuntu
ubuntu latest 747cb2d60bbe 3 weeks ago 122MB`
ubuntu <none> ebcd9d4fca80 5 months ago 118MB
$ docker image inspect --format '{{.RepoDigests}}' ebcd9
[ubuntu@sha256:382452f82a8bbd34443b2c727650af46aced0f94a44463c62a9848133ecb1aa8]
Run Code Online (Sandbox Code Playgroud)
示例 2:
$ docker ps -aq
1edd14b528db
$ docker container inspect 1edd | grep Image
"Image": "sha256:76da55c8019d7a47c347c0dceb7a6591144d232a7dd616242a367b8bed18ecbc",
"Image": "alpine:3.6",
$ docker image inspect --format '{{.RepoDigests}}' 76da55
[alpine@sha256:f006ecbb824d87947d0b51ab8488634bf69fe4094959d935c0c103f4820a417d]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1891 次 |
| 最近记录: |