Docker 镜像拉取失败?解决 Alibaba Cloud 容器仓库信任问题

图片[1]-Docker 镜像拉取失败?解决 Alibaba Cloud 容器仓库信任问题

问题分析

当你尝试从阿里云容器仓库(registry.cn-hangzhou.aliyuncs.com)拉取 Docker 镜像时,遇到了以下错误:

Error: remote trust data does not exist for registry.cn-hangzhou.aliyuncs.com/earic/apollo: registry.cn-hangzhou.aliyuncs.com does not have trust data for registry.cn-hangzhou.aliyuncs.com/earic/apollo

这个错误表明 Docker 的内容信任(Content Trust)功能已启用,但系统无法找到该镜像的信任数据。

解决方案

方案一:临时禁用 Docker 内容信任

最简单的方法是在当前终端会话中临时禁用 Docker 内容信任功能:

export DOCKER_CONTENT_TRUST=0

设置此环境变量后,再次尝试拉取镜像。这种方法简单快捷,但仅对当前终端会话有效,关闭终端后需要重新设置。

方案二:在 Docker 配置中添加例外

通过修改 Docker 守护进程配置,可以永久解决此问题:

  1. 编辑 Docker 配置文件:
sudo vim /etc/docker/daemon.json
  1. 添加或修改以下内容:
{
  "content-trust": {
    "trust-pinning": {
      "insecure-registries": ["registry.cn-hangzhou.aliyuncs.com"]
    }
  }
}
  1. 保存文件并重启 Docker 服务:
sudo systemctl restart docker

这种方法的优点是永久性解决问题,不需要每次都设置环境变量。

方案三:使用镜像摘要拉取

如果你知道镜像的确切摘要值,可以使用摘要直接拉取镜像:

docker pull registry.cn-hangzhou.aliyuncs.com/earic/apollo@sha256:摘要值

这种方法的优势在于可以精确指定要拉取的镜像版本,适合在生产环境中使用,但需要提前知道镜像的摘要值。

总结

Docker 内容信任机制是一项安全功能,用于验证镜像的完整性和来源。当拉取没有信任数据的镜像时会出现错误。根据你的具体需求,可以选择上述三种方法之一来解决问题:临时禁用内容信任、添加仓库例外或使用镜像摘要拉取。

对于开发测试环境,方案一或方案二通常足够;而对于生产环境,建议使用方案三以确保镜像的安全性和一致性。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享