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

Spinning Docker / ECS containers from Jenkins Docker container

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

初始设置后,我尝试 运行ning 来自 Jenkins 文档的 hello-world pipeline。我看到我得到 "docker: not found"

据我了解,这是因为 Docker 未在 Jenkins Docker 容器中安装和使用。但是,我有一个基本问题,即我是否应该继续在 运行ning Jenkins Docker 容器中安装 Docker(以将其用作基本映像)。当我四处搜索时,我发现了这个 blog post and this

我想遵循这些建议,并尝试将卷 /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 这表明设置不顺利。

这是我的问题 -

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

我的最终目标是创建两种类型的 Jenkins 作业来执行以下操作 -

Jenkins 作业类型 1

  1. 从 BitBucket 云中查看存储库
  2. 运行 shell 脚本为 java 项目构建 docker 图像(可能使用 maven jib 插件)
  3. 发布到 AWS ECR。 (假设这可以使用 cloudbees plugin

Jenkins 作业类型 2

  1. 从 AWS ECR 中提取作业类型 1 发布的图像
  2. 从图像创建一个容器(本质上是 运行 的 java 应用程序)
  3. 容器本身可以 运行 在同一个 Jenkins ECR 集群上。但是,从站是否应该在其中安装 docker 以从 ECR 中提取和 运行 图像?

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

我用 Google 搜索了您在 post 中包含的 docker 错误,并找到了

You have to install libltdl-dev in order to get everything working correctly

由于错误相同,建议您试一试。根据 post,在 docker 容器中安装 libltdl-dev。