2017-07-19 78 views
0

我已经退出詹金斯集装箱从码头工人枢纽这样的:如何将软件或其他软件包添加到码头集装箱?

docker pull jenkins 

的容器中运行,我可以在访问詹金斯UI:

http://localhost:8080 

我的问题是:

如果我想能够创建一个从github仓库中取出的jenkins作业,并且我想从该仓库的其中一个测试文件运行一些python测试,我如何安装额外的软件包,如virtualenvwrapper, pip, pytest, nose, selenium等?

看起来docker容器不会与本地主机文件系统共享任何引用。

如何在这个正在运行的容器中安装这样的软件包?

谢谢

回答

3

您将需要在docker容器构建时安装所有依赖项。

您可以将您自己的Dockerfile关闭jenkins库,然后将自定义的东西放在那里。您Dockerfile可以像

FROM jenkins:latest 
MAINTAINER Becks 

RUN apt-get update && apt-get install -y {space delimited list of package} 

然后,你可以这样做......

docker build -t jenkins-docker --file Dockerfile . 
docker run -it -d --name=jenkins-docker jenkins-docker 

我可能没有正确写入所有的语法,但是这基本上是你需要做什么。如果您想要run步骤启动jenkins,请按照他们在现有的Dockerfilehere中所做的操作并将相关部分添加到您的dockerfile中,以添加一些RUN步骤来运行jenkins。

遇到了this page,它遇到了类似的问题,虽然它也将docker sock安装在另一个容器中,以将一个容器连接到另一个容器。鉴于它的一个外部链接,这里是从那里的相关dockerfile,

FROM jenkins:1.596 

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

USER jenkins 
COPY plugins.txt /usr/share/jenkins/plugins.txt 
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt 

这是你可以旋转起来。

docker build -t myjenk . 
... 
Successfully built 471fc0d22bff 
$ docker run -d -v /var/run/docker.sock:/var/run/docker.sock \ 
       -v $(which docker):/usr/bin/docker -p 8080:8080 myjenk 

我强烈建议阅读那篇文章。它非常棒。

+0

虽然Debosmit'answer是一个干净的路要走,但你也可以用一种拙劣的方式来做到这一点。 启动jenkins,然后连接 'docker exec -it container_name_or_id bash'并执行相同的操作'apt-get update && apt-get install -y {空格分隔的软件包列表}'然后断开与容器的连接, docker commit container_name_or_id myuser:myjenkins'查看文档https://docs.docker.com/engine/reference/commandline/commit/ 现在你有一个shell里面,所以你可以 – user2915097

+3

你真的不应该使用docker commit作为dockerfiles对维护和文档更好。尤其适用于像在容器中安装软件包那样简单的事情。 –

相关问题