我想在Docker容器中运行Jenkins。一切都好。我可以这样运行:docker run -d --name jenkins -t -i -p 49001:8080 jenkins我也可以添加持久性存储。当我创建管道必须执行docker命令(build和push)时,问题就来了。首先,错误是未在系统上安装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 run -d --name jenkins -t -i -p 49001:8080 jenkins
docker
build
push
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: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory
我该如何解决这个问题?在Docker中安装Jenkins并在其中运行Docker的正确方法是什么?我认为有两种方法:
值得在Docker中运行Jenkins吗?我尝试从手动安装缺少的库apt-get,但我知道这不是正确的方法。
apt-get
您必须先安装libltdl-dev才能正常运行。创建一个Dockerfile看起来像这样的:
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