amazon-web-services - aws ecs 优化 AMI 中的私有(private) docker 注册表身份验证不成功

标签 amazon-web-services amazon-ec2 docker aws-ec2 amazon-ecs

我正在编写一个用于创建 ECS 自动缩放集群的 terraform 脚本。
我创建了一个集群并向其中添加了 ec2 容器实例。我的任务定义文件包含一个来自私有(private) docker 存储库的图像。我浏览了 aws 官方文档并找到了 Private Registry Authentication 的页面
并尝试了那里描述的两种方法。

  • 使用 dockercfg
  • docker 方式

  • 我将我的 ecs.config 文件放在 S3 存储桶中,在实例启动期间,我将用户数据传递为
    #!/bin/bash
    yum install -y aws-cli
    aws s3 cp s3://<my_bucket_name>/ecs.config /etc/ecs/ecs.config
    

    在我的第二种方法中,我将使用过的数据传递为
    echo "ECS_ENGINE_AUTH_TYPE=docker" >>/etc/ecs/ecs.config
    echo "ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}"  >>/etc/ecs/ecs.config
    

    登录到我的容器实例时,我在/etc/ecs/ecs.config 中找到了数据,但是当我尝试手动提取图像时,我向我显示了一个找不到图像的错误。

    然后我在那里尝试 docker login 命令并手动输入我的凭据并尝试再次拉取该图像并最终成功。

    我不确定是否有办法通过用户数据自动在 ecs 优化图像中实现私有(private) docker 注册表身份验证,或者是否做错了什么。

    请帮我解决这个问题。

    enter image description here

    最佳答案

    when I try to pull the image manually I shows me an error that no image found



    您遵循的方法向 ECS 代理提供私有(private)注册表凭据,但不向 Docker CLI(Docker CLI 将其凭据数据存储在不同的位置)。由于您已经为代理配置了凭据,因此您应该能够运行引用私有(private)注册表中的镜像的任务定义,而无需从 Docker CLI 手动拉取镜像。

    编辑:
    看起来您的 /etc/ecs/ecs.config 中可能有错误。由于您引用 echo 的方式,在实例上的文件命令。您需要更改此行:
    echo "ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}"  >>/etc/ecs/ecs.config
    


    echo 'ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"email@example.com"}}'  >>/etc/ecs/ecs.config
    

    关于amazon-web-services - aws ecs 优化 AMI 中的私有(private) docker 注册表身份验证不成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36052334/

    相关文章:

    node.js - 函数 Lambda 的权限被拒绝

    java - 如何终止 Amazon EMR 中的特定 JobFlow?

    database - 在 Amazon VM 上上传 Postgres 数据库

    docker - Google的Container Optimized OS内置哪些内核选项?

    docker - npm 错误!为 Node 项目创建 Docker 镜像时,Tracker "idealTree"已存在

    MySQL - 如何合并来自两个表的数据,使用一个字段的值作为过滤器来计算另一个字段中的值?

    amazon-web-services - AWS Lambda 与 Amazon Connect 的集成不起作用

    amazon-web-services - 在 AWS EC2 实例中加速 Chromedriver/Selenium

    ssh - Ansible - 如何在没有 'authenticity of host' 提示的情况下通过 ssh 进入实例?

    logging - 如何在容器上的特定进程上获取RAM,CPU,网络使用情况