我正在编写一个用于创建 ECS 自动缩放集群的 terraform 脚本。我创建了一个集群并向其中添加了 ec2 容器实例。我的任务定义文件包含一个来自私有 docker 存储库的图像。我浏览了 aws 官方文档并找到了一个私有注册表身份验证页面 并尝试了这两种方法如那里所述。
- 使用 dockercfg
- 码头工人的方式
我将我的 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 优化映像中实现私有 docker 注册表身份验证,或者是否做错了什么。
请帮我解决这个问题。
