我正在编写一个 terraform 脚本来创建 ECS 自动缩放集群。
我创建了一个集群并向其中添加了 ec2 容器实例。我的任务定义文件包含来自私有 docker 存储库的图像。我浏览了 aws 官方文档并找到了一个页面私人登记认证 http://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html并尝试了那里描述的两种方法。
- 使用 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 protected] /cdn-cgi/l/email-protection"}}" >>/etc/ecs/ecs.config
当登录到我的容器实例时,我在 /etc/ecs/ecs.config 中找到了数据,但是当我尝试手动拉取映像时,我显示了一条错误,指出未找到映像。
然后我在那里尝试 docker login 命令并手动输入我的凭据并尝试再次拉取该映像,最终成功。
我不确定是否有办法通过用户数据自动在 ecs 优化映像中实现私有 docker 注册表身份验证,或者是否做错了什么。
请帮我解决这个问题。
当我尝试手动拉取图像时,我显示一条错误,提示找不到图像
您遵循的方法向 ECS 代理提供私有注册表凭据,但不向 Docker CLI 提供私有注册表凭据(Docker CLI 将其凭据数据存储在不同的位置)。由于您已经为代理配置了凭据,因此您应该能够运行引用私有注册表中的映像的任务定义,而无需从 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 protected] /cdn-cgi/l/email-protection"}}" >>/etc/ecs/ecs.config
to
echo 'ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"my_name","password":"my_password","email":"[email protected] /cdn-cgi/l/email-protection"}}' >>/etc/ecs/ecs.config
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)