我有一个装有Amazon EC2容器服务插件的Jenkins服务器。我可以使用示例映像(例如jenkins / jnlp-slave)在ECS中运行从属服务器,但我想使用AWS ECR存储库中存在的我自己的自定义映像作为从属服务器。
我在“配置系统”部分的ECS模板中将映像名称命名为{ID} .dkr.ecr.us-east-1.amazonaws.com / python-slave:latest,
但是它不能启动奴隶。我去了ECS集群以查看错误原因,我可以在任务详细信息中看到对于ECR图像,它正在尝试使用以下命令来启动容器,
-url http://xyz:8084/ b0a06a93aa32251b22ae3a1a198e2d8a2057f2808b7947ed612b9e1eebb109c5 'ecs java slave-4b15n'
由于错误而失败,
Status reason CannotStartContainerError: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"-url\": executable file not found in $PATH": unknown
Command ["-url","http://xyz:8084/","b0a06a93aa32251b22ae3a1a198e2d8a2057f2808b7947ed612b9e1eebb109c5","ecs java slave-4b15n"]
Privileged false
但是如果我使用示例图像,例如jenkins / jnlp-slave,它正在使用以下命令并运行正常
jenkins-agent -url http://xyz:8084/ bf8b42ab34d2691732026d8f454027c46d4ddaf9e9a7abc5af9c1ce417facf7a 'ecs java slave-x6p3z'
我试图找出这种行为的确切原因,但是没有运气。无论如何,我们可以使用ECS插件将ECR图像用作詹金斯奴隶。
为了拉出ECR映像,我们应该使用注册表对Docker客户端进行身份验证,然后只有您才能拉出该映像
例如$(aws ecr get-login --no-include-email --region us-east-1)