繁体   English   中英

AWS Batch 不适用于私有 docker 注册表

[英]AWS Batch not working with private docker registry

我正在尝试使用私有 docker 注册表运行 aws 批处理。在谷歌上搜索并找到一些链接,人们建议在这些链接中使用启动模板中的用户数据并在那里指定 docker 登录。但我的问题是我的组织的 docker 注册表也使用证书登录。 在我的本地机器上,我将证书放在 /etc/docker/cert.d/dockerhost:port 位置,工作正常。但是,如果我尝试在 ec2 的用户数据中做同样的事情,它说没有像 /etc/docker 这样的目录。 . 不确定如何在这里使用私有 docker 注册表。 如果有人有任何解决方案或建议,请提供帮助。

注意:我尝试了几个链接并完成了它,并将解决方案发布在答案中。

只是对任何尝试相同的人的更新:

如果您需要 docker 注册表的证书,即如果连接是 SSL,那么您需要将证书放在目录 /etc/docker/certs.d/dockerhostname:port/ 中。

当 AWS 批量实例化 EC2 框时,它预装了 docker,您可以在用户数据脚本中进行所需的更改,以便从在 SSL 连接中工作的私有存储库中获取图像:

MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/cloud-config; charset="us-ascii"

packages:
- jq
- aws-cli
runcmd:
- /usr/bin/aws configure set region $(curl http://169.254.169.254/latest/meta-data/placement/region)
- export SECRET_STRING=$(/usr/bin/aws secretsmanager get-secret-value --secret-id your_docker_pwd_secret_name | jq -r '.SecretString')
- export PASSWORD=$(echo $SECRET_STRING | jq -r '.docker_pwd')//.docker_pwd is the key in secret_manger 
- cd /etc/docker
- mkdir certs.d
- cd certs.d
- mkdir docker_host:docker_port
- cd docker_host:docker_port
- openssl s_client -showcerts -connect docker_host:docker_port > ca.crt// download certificate and save as ca.crt
- exit
- docker login docker_host:docker_port --username user_name--password $PASSWORD
- echo 'Completed Init script !!'
--==MYBOUNDARY==--

此链接解释并解决您的问题。 它对我有用:

https://aws.amazon.com/blogs/compute/how-to-authenticate-private-container-registries-using-aws-batch/

仅适用于 ec2 按需且对 fargate 无效,如果您的解决方案涉及后者(fargate),那么如果您不想要棘手的解决方案,我想您需要将图像从 Docker 推送到 AWS ECR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM