我有一个脚本,它检索 ECR 的登录,使用登录凭据(reauth 设置为 True)对 DockerClient 实例进行身份验证,然后尝试提取指定的容器映像。
当在我的本地机器上运行与 EC2 实例上的 docker 守护进程交互时,该代码似乎运行良好,但是当从 EC2 实例运行时,我不断得到
404 Client Error: Not Found ("repository XXXXXXXX.dkr.ecr.eu-west-2.amazonaws.com/autohld-runner not found: does not exist or no pull access")
相同的存储库用于在 EC2 实例上本地和远程执行代码。我尝试在 ECR 中设置对图像的访问权限,以允许所有人和我的 AWS ID 都可以拉取。我还授予分配给 EC2 实例完全管理员访问权限的角色。都没有喜悦。
如果我通过命令行使用完全相同的 repo URI(从错误中复制)在 EC2 实例上执行相同的任务,则它可以正常工作。
我在 docker-py 中缺少什么吗?
url = "tcp://127.0.0.1:2375"
dockerd = docker.DockerClient(base_url=url, version='auto')
dockerd.login(username=ecr.username, password=ecr.password, email='none', registry=ecr.registry, reauth=True)
dockerd.images.pull(ecr.get_repo(instance.tags['Container']), tag='latest')
get_repo
返回错误消息中报告的完整 URI,Container 元素的名称为“autohld-runner”
谢谢