You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker CLI获取DockerHub镜像标签对应的可用SHA-256值

如何获取可用于Dockerfile FROM指令的镜像SHA-256摘要?

你之前用docker images ubuntu:22.04 --format "{{.ID}}" --no-trunc拿到的SHA值没法用在FROM ubuntu@$ID里,因为这个命令返回的是镜像自身的本地ID,而Dockerfile的FROM指令需要的是镜像的manifest digest(Docker Hub上标识镜像的全局唯一摘要)。

正确的命令

要获取能直接用于FROM指令的SHA-256值,使用以下命令:

  1. 获取完整的镜像@sha256:xxx格式(可直接复制到FROM语句中):
docker inspect --format='{{index .RepoDigests 0}}' ubuntu:22.04

执行后会返回类似结果:ubuntu@sha256:df5de72bdb3b711aba4eca685b1f42c722cc8a1837ed3fbd548a9282af2d836d

  1. 如果只想单独提取SHA-256字符串:
docker inspect --format='{{index .RepoDigests 0}}' ubuntu:22.04 | cut -d'@' -f2

为什么原来的命令不行?

docker images --no-trunc返回的ID是本地镜像的唯一标识,但这个值和Docker Hub上的manifest digest不是同一概念。Docker拉取镜像时,需要用manifest digest匹配远端仓库的镜像元数据,使用本地镜像ID会导致元数据加载失败,也就是你遇到的报错。

正确使用示例

如果要通过build-arg传递摘要,修改后的构建命令:

docker build . \
  --tag shell \
  --build-arg IMAGE_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ubuntu:22.04)

对应的Dockerfile:

ARG IMAGE_DIGEST
FROM $IMAGE_DIGEST
RUN apt-get update -y \
    && apt-get install -y jq git curl

内容的提问来源于stack exchange,提问作者ams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 13:48:23