2017-07-19 81 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對維護和文檔更好。尤其適用於像在容器中安裝軟件包那樣簡單的事情。 –

相關問題