当前位置: 首页 > 面试题库 >

詹金斯在Docker容器中(运行Docker管道)

封锐藻
2023-03-14
问题内容

我想在Docker容器中运行Jenkins。一切都好。我可以这样运行:docker run -d --name jenkins -t -i -p 49001:8080 jenkins我也可以添加持久性存储。当我创建管道必须执行docker命令(buildpush)时,问题就来了。首先,错误是未在系统上安装docker。是的,期望。然后我开始搜索,发现如何在容器中运行docker(传递2个持久卷):docker run ... -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 49001:8080 jenkins

这可以运行,但是有一些例外。docker容器中有命令,但是当我尝试运行它时,它将引发异常:docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory

我该如何解决这个问题?在Docker中安装Jenkins并在其中运行Docker的正确方法是什么?我认为有两种方法:

  1. 我正在做的-使用插座
  2. 我可以公开允许连接和运行命令的docker api

值得在Docker中运行Jenkins吗?我尝试从手动安装缺少的库apt-get,但我知道这不是正确的方法。


问题答案:

您必须先安装libltdl-dev才能正常运行。创建一个Dockerfile看起来像这样的:

FROM jenkins:latest

USER root
RUN apt-get update \
      && apt-get upgrade -y \
      && apt-get install -y sudo libltdl-dev \
      && rm -rf /var/lib/apt/lists/*
RUN echo "jenkins ALL=NOPASSWD: ALL" >> /etc/sudoers

USER jenkins
# Here you can install some Jenkins plugins if you want


 类似资料:
  • 问题内容: 我正在尝试建立一个jenkins多分支管道以在docker容器中运行我所有的代码验证步骤,然后构建docker映像并将其推送到所述docker容器之外。 目前,我的Jenkinsfile看起来像这样(为了便于阅读而进行了缩减): 这里的问题是我使用dockerfile代理的每个阶段,jenkins都会尝试重建docker映像。这些阶段都已缓存,但是发送构建上下文并实际处理所有内容仍然比

  • 我有一个詹金斯大师,能够从CodeCommit中提取代码。我还设置了一个jenkins slave,这个项目有一个Dockerfile来构建一个图像。当我尝试执行shell命令时, 我得到以下错误:

  • 问题内容: 我有以下工作流程,用于将Web应用发布到我的开发服务器。该服务器只有一个docker主机,我正在使用docker-compose来管理容器。 将我的应用程序中的更改推送到私有gitlab(在docker中运行)。该应用程序包括一个Dockerfile和docker-compose.yml Gitlab触发了一个jenkins构建(jenkins也正在docker中运行),它会执行一些常

  • 问题内容: 以下是配置文件: 在这里可用。 运行以下命令后: 从浏览器启动时,詹金斯大师显示以下错误: 詹金斯大师的Docker文件在这里: 为什么詹金斯大师给这个例外? 问题答案: 问题是您使用了3岁的 Jenkins版本2.7.3。堆栈跟踪抱怨方法 根据Jenkins API,此方法在2.98版中引入。有关更多详细信息,请参见更改日志。

  • 我正在使用jenkins管道,我的Jenkinsfile有几个阶段和工作。有没有办法在詹金斯管道之外运行特定的工作? 示例:假设其中一个阶段是执行“SCP构建工件到远程位置”。出于某种原因,这失败了,如果我想手动运行jenkins管道之外的其他工作,我如何做到这一点? 我对调用新的构建最不感兴趣。那么,我们可以手动运行jenkins管道以外的故障后的剩余作业吗?

  • 问题内容: 这是我要执行的Jenkins管道。我正在关注本教程: 但是作业失败,并显示以下消息。 有人可以帮我解决为什么失败了。 问题答案: 您需要在阶段声明之后添加一个step块。