更新时间:2025-03-25 GMT+08:00
为什么docker pull指令执行失败?
x509: certificate signed by unknown authority
问题现象:使用docker pull拉取镜像,报错“x509: certificate signed by unknown authority”。
问题原因:
- 容器引擎客户端和SWR之间使用HTTPS的方式进行通信,客户端会对服务端的证书进行校验。如果客户端安装的根证书不完整,会报如下错误:“x509: certificate signed by unknown authority”。
- 容器引擎客户端配置了Proxy导致。
解决方法:
- 如果您信赖服务端,跳过证书认证,那么可以手动配置容器引擎的启动参数,配置如下(其中地址配置成需要的即可,选择一个配置即可):
- /etc/docker/daemon.json(如果没有可以手动创建),在该文件内添加如下配置(注意缩进,2个空格):
{ "insecure-registries":["镜像仓库地址"] }
- /etc/sysconfig/docker:
INSECURE_REGISTRY='--insecure-registry=镜像仓库地址'
添加配置后执行如下命令重启:systemctl restart docker或service restart docker。
- /etc/docker/daemon.json(如果没有可以手动创建),在该文件内添加如下配置(注意缩进,2个空格):
- 执行docker info命令,检查Proxy配置是否正确,修改为正确的Proxy配置。
Error: remote trust data does not exist
问题现象:使用docker pull拉取镜像,报错“Error: remote trust data does not exist”。
问题原因:客户端开启镜像签名验证,而镜像没有镜像签名层。
解决方法:查看“/etc/profile”文件中的环境变量是否设置了DOCKER_CONTENT_TRUST=1,如果设置了,请将其改为DOCKER_CONTENT_TRUST=0,然后执行source /etc/profile生效。
pull access deny
问题现象:拉取镜像的时候报错,详细报错见下图。
问题原因:您的账号没有拉取镜像的权限swr:repo:download或对应组织的权限。
解决办法:
给您的用户添加镜像拉取的权限以及对应组织的权限,可通过以下两种方法进行授权:
方法一: 本地授权:使用具有SWR管理员权限的用户在组织管理页面授予要拉取镜像的用户目标组织的管理权限。授权操作请参见授权管理
方法二: 使用IAM细粒度授权,为用户授予自定义的权限策略,包含镜像拉取的权限,具体操作如下:
- 登录管理控制台。
- 在页面上方选择“区域”后,单击页面左上方的
,选择“管理与监管 > 统一身份认证服务 IAM”。
- 选择左侧导航树的“权限管理 > 权限”,单击右上角的“创建自定义策略”填写策略参数。策略名称自定义,策略配置方式选择“JSON视图”。填写策略内容如下(请将namespace1替换为您要拉取镜像所在的组织),配置完成后单击“确定”。
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "swr:repo:download" ], "Resource": [ "SWR:*:*:repo:namespace1/*" ] }, ] }
- 选择左侧导航树的“用户组”,单击您的用户所在的用户组名称进入用户组详情页面,单击”授权”,将步骤3创建的权限添加给用户所在的用户组即可。
- 稍等1分钟待权限生效后进行重新拉取。
父主题: 故障类