如何将带SBOM的Docker镜像推送至私有镜像仓库?
Docker镜像SBOM推送后丢失的解决办法
可能的原因及解决步骤
私有仓库不支持OCI Artifact规范:SBOM是以OCI附属artifact的形式推送的,部分私有仓库默认未开启对该格式的支持。需要确认仓库是否配置了OCI artifact存储能力,比如Harbor需手动开启对应选项,或检查仓库版本是否满足要求。
Buildx版本过低:旧版Docker Buildx对SBOM推送的支持存在缺陷,建议升级至最新稳定版。执行以下命令检查当前版本:
docker buildx version若版本低于v0.10.0,建议进行升级。
未显式指定SBOM格式:默认的
--sbom=true可能仅生成SBOM但未正确关联推送逻辑。尝试显式指定SBOM为OCI格式,确保推送时同步上传附属artifact:docker buildx build --sbom=oci -t <myorg>/<myreg>:$BUILD_ID --push .查看SBOM的正确命令:
docker buildx imagetools inspect默认仅展示镜像主manifest,需添加格式参数才能查看SBOM:docker buildx imagetools inspect <myorg>/<myreg>:$BUILD_ID --format '{{json .SBOM}}'也可使用
oras工具直接查询仓库中的SBOM artifact:oras discover <myorg>/<myreg>:$BUILD_ID检查构建日志:重新运行构建命令时,留意日志中是否有SBOM生成、推送的相关记录。若无对应日志,说明SBOM未被正确生成,可能与构建上下文或基础镜像不支持SBOM生成有关。
内容的提问来源于stack exchange,提问作者Eric Brown
相关产品推荐
相关产品推荐

