Docker容器中的Jenkins(运行docker管道)

时间:2017-07-15 19:20:49

标签: docker jenkins

我想在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
  3. 实际上是值得在Docker中运行Jenkins吗?我尝试从apt-get手动安装缺少的lib它可以工作,但我知道这不是正确的方法..

2 个答案:

答案 0 :(得分:17)

您必须安装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

答案 1 :(得分:0)

这是@Israel Perales docker映像的简单更新,上面的bcz不再起作用

   FROM jenkins/jenkins:lts


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

    USER jenkins

构建docker映像并按以下方式运行:

$ docker build -t docIndoc .

$ docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):$(which docker) docIndoc

$ docker exec -it jenkins /bin/bash