猿问

使用 python docker sdk 登录到 ecr 注册表无法按预期工作

假设我已经在名为 creds 的对象中从 boto 获得了 ecr 凭据,当我这样做时:


client = from_env()

client.login(creds.username, password=creds.password, registry=creds.endpoint)

我得到:


{u'IdentityToken': u'', u'Status': u'Login Succeeded'}

到目前为止很棒!我检查:


client.api.__dict__

我得到:


{'_auth_configs': {'auths': {'registry_i_just_logged_into': {'email': None,

'password': 'xxxxxxxxxxxxx',

'serveraddress': 'registry_i_just_logged_into',

'username': 'xxxxxxx'},

u'some_other_registry': {},

'credsStore': u'osxkeychain'}

.... (etc, etc)

到目前为止,还不错。但是当我这样做时:


client.images.pull("registry_i_just_logged_into/some_repo", tag="latest")

或者当我这样做时(从命令行):


docker pull registry_i_just_logged_into/some_repo:latest

我总是得到:


Error response from daemon: pull access denied for some_repo, repository does not exist or may require 'docker login'

尽管如此,如果我这样做(使用我用来登录的相同用户名和密码):


client.images.pull("registry_i_just_logged_into/some_repo", tag="latest", auth_config={'username': creds.username, 'password': creds.password})

它没有问题。


所以我假设这是解决要使用哪个注册表的顺序的问题,但如果密钥已经存在于 _auth_configs 中,docker sdk 似乎应该处理这个问题。


我究竟做错了什么?


呼唤远方
浏览 174回答 2
2回答
随时随地看视频慕课网APP

相关分类

Python
我要回答