作者:董鹏飞80 | 来源:互联网 | 2023-01-30 17:30
我正在使用谷歌容器注册表来托管我的docker镜像.我也使用moby客户端来golang与之交互.我正在使用JSON服务密钥方法,它似乎与RegistryLogin一起使用.响应文本是Login Successful.但是,我不知道如何使用ImagePull返回的身份验证密钥.在引擎盖设置下,RegistryAuth似乎设置了作为X-Registry-Auth标头传递的任何字符串,谷歌似乎没有在任何地方提到这一点.
我已经尝试将返回的密钥作为RegistryAuth传递,我已经尝试运行RegistryLogin然后只是拉动没有RegistryAuth.我已经尝试了base64编码我的auth配置并在RegistryAuth中发送它.无论我尝试什么,我都会收到"来自守护进程的错误响应:找不到存储库xxx:不存在或没有拉取访问权限".运行docker登录然后使用相同的详细信息进行docker pull在cli上运行正常.我的代码是:
authConfig := types.AuthConfig{
Username: "_json_key",
Password: string(decodedKey),
ServerAddress: "https://gcr.io",
}
_, err = engine.Client.RegistryLogin(ctx, authConfig)
if err != nil {
return err
}
responseBody, err := engine.Client.ImagePull(ctx, image, types.ImagePullOptions{
})
defer responseBody.Close()
if err != nil {
return err
}
decodingKey是JSON密钥文件内容.任何想法如何让这个工作?