从 Jenkins Docker 容器旋转 Docker / ECS 容器

Posted

技术标签:

【中文标题】从 Jenkins Docker 容器旋转 Docker / ECS 容器【英文标题】:Spinning Docker / ECS containers from Jenkins Docker container 【发布时间】:2019-04-08 11:15:51 【问题描述】:

我在一个只有一个 EC2 实例的 AWS ECS 集群上使用 Jenkins Docker Image 设置了 Jenkins。

初始设置后,我尝试运行 Jenkins 文档中的 hello-world pipeline。我看到我收到“docker: not found”

我知道这是因为 Jenkins Docker 容器中没有安装和使用 Docker。但是,我有一个基本问题是我是否应该继续在正在运行的 Jenkins Docker 容器中安装 Docker(以将其用作基础映像)。当我四处研究时,我发现了这个blog post 和这个SO Answer。

我想遵循这些建议,并尝试将卷 /usr/bin/docker 和套接字 /var/run/docker.sock 从主机 EC2 / ECS 实例安装到 Jenkins 容器。之后,当我运行 docker version 命令来测试设置时,我遇到了 linux 库问题 - docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory,这表明设置不顺利。

这是我的问题 -

    在基于 Docker 容器运行 Jenkins 时,如何运行使用 Docker 容器的 Jenkins 管道?我希望能够拉/构建/运行 docker 容器,例如 - 运行上面引用的 hello-world 管道示例?

我的最终目标是创建 2 种类型的 Jenkins 作业,它们执行以下操作 -

Jenkins 作业类型 1

    从 BitBucket 云中签出存储库 运行 shell 脚本为 java 项目构建 docker 映像(可能使用 maven jib 插件) 发布到 AWS ECR。 (假设这可以使用cloudbees plugin 完成)

Jenkins 工作类型 2

    从 AWS ECR 中拉取从 Job Type 1 发布的图像 从图像创建一个容器(它本质上运行 java 应用程序) 容器本身可以与从属服务器在同一个 Jenkins ECR 集群上运行。但是,奴隶们是否应该在其中安装 docker 以从 ECR 中提取和运行映像?

在大量研究后提出这些问题但没有找到答案。任何指导表示赞赏。谢谢。

【问题讨论】:

【参考方案1】:

我在 Google 上搜索了您在帖子中包含的 docker 错误并找到了 this *** post。

您必须安装 libltdl-dev 才能让一切正常运行

由于错误是相同的,我建议你试一试。根据帖子,在 docker 容器中安装 libltdl-dev。

【讨论】:

以上是关于从 Jenkins Docker 容器旋转 Docker / ECS 容器的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu系统下基于docker部署Jenkins环境

使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建

从jenkins docker ecs容器中访问ecr图像

如何使用 Jenkins 将 Docker 容器从 Amazon ECR 自动部署到 Kubernetes

从 docker 内部运行 docker 可以吗?

从一个 docker 容器无密码登录到另一个