docker - 从 Jenkins Docker 容器旋转 Docker / ECS 容器
问题描述
我在一个只有一个 EC2 实例的 AWS ECS 集群上使用Jenkins Docker Image设置了 Jenkins。
在初始设置之后,我尝试从 Jenkins 文档中运行hello-world 管道。我看到我收到“docker:not found”
我知道这是因为 Jenkins Docker 容器中没有安装和使用 Docker。但是,我有一个基本问题是我是否应该继续在正在运行的 Jenkins Docker 容器中安装 Docker(以将其用作基础映像)。当我四处研究时,我发现了这篇博文和这个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 工作,它们执行以下操作 -
詹金斯工作类型 1
- 从 BitBucket 云中签出存储库
- 运行一个 shell 脚本为一个 java 项目构建一个 docker 镜像(可能使用 maven jib 插件)
- 发布到 AWS ECR。(假设这可以使用cloudbees 插件完成)
詹金斯工作类型 2
- 从 AWS ECR 中提取从 Job Type 1 发布的图像
- 从图像创建一个容器(它本质上运行 java 应用程序)
- 容器本身可以与从属服务器在同一个 Jenkins ECR 集群上运行。但是,奴隶们是否应该在其中安装 docker 以从 ECR 中提取和运行映像?
经过大量研究后提出这些问题,但没有找到答案。任何指导表示赞赏。谢谢。
解决方案
我用 Google 搜索了您在帖子中包含的 docker 错误,并找到了这个 StackOverflow 帖子。
您必须安装libltdl-dev才能使一切正常运行
由于错误是相同的,我建议你试一试。根据帖子,在 docker 容器中安装 libltdl-dev。
推荐阅读
- java - 尽管关闭了写入文件的流,但 deleteOnExit 不删除文件
- php - 如何在 Symfony 5 中取消发送的消息?
- python - Google Cloud Dataflow - 从 PubSub 到 Parquet
- hybris - 尝试在 Hybris 上启用动态约束时出错
- php - 将 MSSQL (2017) DB 与 IIS 中托管的 PHP7.4(x64) 连接起来
- python - Convert 'tabulated' string of pandas dataframe back into a dataframe
- javascript - Chartjs yAxes 不呈现刻度
- python - 如何在 Python.subprocess 中获取丢包值
- authentication - 带有 Azure AD 身份验证的 IIS 身份验证设置
- mongoid - 什么是等效增量!关于蒙古人