Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Jenkins ECS插件中使用ECR映像_Jenkins_Jenkins Plugins_Amazon Ecs - Fatal编程技术网

如何在Jenkins ECS插件中使用ECR映像

如何在Jenkins ECS插件中使用ECR映像,jenkins,jenkins-plugins,amazon-ecs,Jenkins,Jenkins Plugins,Amazon Ecs,我有一个安装了亚马逊EC2容器服务插件的Jenkins服务器。我可以使用示例映像(如jenkins/jnlp slave)在ECS中运行从映像,但我想使用AWS ECR存储库中的自定义映像作为从映像 在配置系统部分,我将映像名命名为{ID}.dkr.ecr.us-east-1.amazonaws.com/python slave:ECS模板的最新版本, 但它无法抚养奴隶。我去ECS集群查看错误原因,我可以在任务详细信息中看到,对于ECR映像,它正试图使用以下命令来启动容器 -url http:

我有一个安装了亚马逊EC2容器服务插件的Jenkins服务器。我可以使用示例映像(如jenkins/jnlp slave)在ECS中运行从映像,但我想使用AWS ECR存储库中的自定义映像作为从映像

在配置系统部分,我将映像名命名为{ID}.dkr.ecr.us-east-1.amazonaws.com/python slave:ECS模板的最新版本,

但它无法抚养奴隶。我去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映像用作jenkins Slave。

要提取ECR映像,我们应该使用注册表验证docker客户端,然后只有您才能提取映像

例如。
$(aws ecr get login--不包括电子邮件--地区us-east-1)

我也遇到了这个问题。您必须使用jnlp从属映像,或带有构建工具的扩展映像或cloudbees从属映像(如果您使用的是cloudbees)

然后,通过向docker映像添加所需的库来扩展该映像。您可以使用“apt get”向其添加图像

使用python扩展从属映像的示例

FROM jenkins/jnlp-slave:latest
RUN apt-get install -y -f python3 python3-pip


将其视为通用的debian映像。您可以安装所需的任何内容。

ECS实例可以提取映像,但无法将其作为容器运行,因为命令的起始位置是-url,而不是jenkins agent,如上文所述