设置';认证';在~/.docker/config.json文件中拉取私有docker图像

设置';认证';在~/.docker/config.json文件中拉取私有docker图像,docker,gitlab,private-repository,Docker,Gitlab,Private Repository,我的~/.docker/config.json文件如下: { “授权”:{ “gcr.io”:{ “授权”:“b2Fhs74nf9s1d……………1SXowjd71nvg4” } }, “credsStore”:“桌面”, “实验性”:“禁用”, “stackOrchestrator”:“swarm” } 我使用的是auth键名,遵循本文中所述的第二种方式 auths[gcr.io][auth]的值是使用以下方法生成的base64编码字符串: echo-n:“| base64 对于我的用户

我的
~/.docker/config.json文件如下:

{
“授权”:{
“gcr.io”:{
“授权”:“b2Fhs74nf9s1d……………1SXowjd71nvg4”
}
},
“credsStore”:“桌面”,
“实验性”:“禁用”,
“stackOrchestrator”:“swarm”
}
我使用的是
auth
键名,遵循本文中所述的第二种方式


auths[gcr.io][auth]
的值是使用以下方法生成的base64编码字符串

echo-n:“| base64
对于我的用户名和密码,我遵循这个。因此,base64生成命令如下:

echo-n“oauth2accesstoken:$(gcloud auth打印访问令牌)”| base64

现在,当我在本地计算机上运行时:

docker pull gcr.io/my_gcp_project/my_gcr_image:my_标签
我得到以下错误:

Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication
我做错了什么?
其他一些事情我自己尝试过

我尝试了方法来查看它对
auths
字段的作用,以便可以复制它。然而,它所做的只是在json文件中添加
credHelpers[“gcr.io”]=“gcloud”
。因此,它将使用我的本地机器的creds助手,而不是任何身份验证凭据。这对我的案例没有帮助,因为我希望通过对
~/.docker/config.json
文件中的
auths[gcr.io]
字段中的凭据进行硬编码来实现

我还尝试了使用如下所示的“docker login
gcloud auth print access token
”方法来查看它对
auths
字段的作用。它所做的只是在
config.json
中添加一个空对象,就像
auths[gcr.io]={}
一样,它没有其他东西。我假设我的操作系统在系统中的某个地方存储了一些东西,并从那里使用实际的凭据。但这对我的情况没有帮助,因为我希望通过在config.json中硬编码凭据来实现

这是上面两个方法在我的
~/.docker/config.json
文件中产生的结果

/~/.docker/config.json文件
{
“授权”:{

“gcr.io”:{},//一切看起来都是应该的,虽然你说不推荐,但我建议你使用
gcloud auth configure docker
登录一次。然后你就可以分析
auth
了,它会放在你的
config.json
中,看看你的设置有什么问题。添加到@anemyte的评论中:我在昨天,我使用docker hub auth。我使用
docker login
命令登录到hub,查看结果config.json,repo的名称不是我所期望的。我一直在尝试
docker.io
,但实际的密钥是
https://index.docker.io/v1
,这让我大吃一惊。还记得装饰完成此操作后,请单击auth键以查看实际使用的格式。@anemyte@SoftwareEngineer事实上,我尝试了
gcloud auth configure docker
,它只为credHelper添加了条目。对auths属性没有做任何更改。更新了我的问题的一些其他内容我自己尝试过的部分。