開箱即用的Jenkins鏡像

如何使用鏡像

$ docker run -p 8080:8080 index.csphere.cn/microp_w_picpaths/jenkins

這樣啓動將會把全部workspace存儲到 /var/jenkins_home 目錄,包括全部數據、插件以及配置,你也許但願運行在一個持久化的數據卷裏:java

$ docker run --name myjenkins -p 8080:8080 -v /var/jenkins_home index.csphere.cn/microp_w_picpaths/jenkins

myjenkins這個容器裏的卷將會獲得持久化,你也能夠映射一個主機目錄:git

$ sudo chown 999 /your/home
$ docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home index.csphere.cn/microp_w_picpaths/jenkins

jenkins管理員用戶

jenkins鏡像啓動後,打開瀏覽器 http://your-ip:8080 , 會提示輸入用戶名密碼,這裏默認用戶名admin,密碼admin。進入後在 用戶 菜單裏修改密碼。github

如何和docker結合

docker最大的優點在於部署,jenkins最強大的在於做業調度和插件系統,如何結合二者?docker

jenkins鏡像裏內置了docker client命令行工具,/usr/bin/docker,所以咱們只須要傳遞 DOCKER_HOST 環境變量 或者映射 docker.sock 文件給jenkins容器,就可讓jenkins容器裏面擁有docker的操做能力,進而將二者結合起來。shell

好比:數據庫

docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock index.csphere.cn/microp_w_picpaths/jenkins

而後咱們就能夠在本身的jenkins項目中,添加一個執行shell腳本,示例以下:瀏覽器

TAG=$(echo $GIT_COMMIT | awk  '{ string=substr($0, 1, 7); print string; }' )
docker build -t demo:$TAG .
docker run --rm demo:$TAG run_test
docker tag -f demo:$TAG your_registry/demo:$TAG
docker push your_registry/demo:$TAG

備份數據

若是你掛載了主機目錄到容器內,那麼備份該目錄便可。這也是咱們推薦的方法。將 /var/jenkins_home 目錄看做數據庫目錄。微信

若是你的卷在容器裏面,那麼能夠經過 docker cp $ID:/var/jenkins_home 命令拷貝出數據。ide

若是對docker數據管理有興趣,能夠閱讀 Managing data in containers工具

設置執行器的數量

你能夠經過groovy腳原本指定jenkins master執行器的數量。默認是2個,但你能夠擴展鏡像:

# executors.groovy
Jenkins.instance.setNumExecutors(5)

Dockerfile

FROM index.csphere.cn/microp_w_picpaths/jenkins
COPY executors.groovy /usr/share/jenkins/ref/init.groovy.d/executors.groovy

構建executors

你能夠在master上構建,但若是想在slave上構建的話,必須作好50000端口映射,這是用來鏈接slave agent的。

傳遞JVM參數

你也許想修改JVM的運行參數,好比heap memory:

$ docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JAVA_OPTS=-Dhudson.footerURL=http://mycompany.com index.csphere.cn/microp_w_picpaths/jenkins

配置日誌

Jenkins的日誌能夠經過 java.util.logging.config.file Java property來配置

$ mkdir data
$ cat > data/log.properties <<EOF
handlers=java.util.logging.ConsoleHandler
jenkins.level=FINEST
java.util.logging.ConsoleHandler.level=FINEST
EOF
$ docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties" -v `pwd`/data:/var/jenkins_home index.csphere.cn/microp_w_picpaths/jenkins

傳遞Jenkins的啓動參數

你也能夠傳遞jenkins的運行參數:

docker run jenkins --version

你還能夠在環境變量 JENKINS_OPTS 中定義jenkins的運行參數,好比:

FROM index.csphere.cn/microp_w_picpaths/jenkins

COPY https.pem /var/lib/jenkins/cert
COPY https.key /var/lib/jenkins/pk
ENV JENKINS_OPTS --httpPort=-1 --httpsPort=8083 --httpsCertificate=/var/lib/jenkins/cert --httpsPrivateKey=/var/lib/jenkins/pk
EXPOSE 8083

你還能夠經過定義環境變量 JENKINS_SLAVE_AGENT_PORT 來改變默認的slave端口

FROM index.csphere.cn/microp_w_picpaths/jenkins
ENV JENKINS_SLAVE_AGENT_PORT 50001

或者直接經過-e環境變量提供:

docker run --name myjenkins -p 8080:8080 -p 50001:50001 -e JENKINS_SLAVE_AGENT_PORT=50001 index.csphere.cn/microp_w_picpaths/jenkins

安裝更多工具

咱們能夠繼承此鏡像,來定義咱們本身的jenkins的hook腳本或插件。好比咱們但願加入更多的插件:

具體的插件能夠經過Jenkins插件 搜索。

plugins.txt文件的內容以下:

pluginID:version
anotherPluginID:version

Dockerfile編寫以下:

FROM index.csphere.cn/microp_w_picpaths/jenkins
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/plugins.sh /usr/share/jenkins/plugins.txt

升級

全部數據都保存在 /var/jenkins_home 目錄,只要在運行jenkins時指定了host volume的目錄( -v hostdir:/var/jenkins_home ),當你升級時,只要該目錄不丟失,升級不會形成以前的配置、數據丟失。

受權和法律

該鏡像由希雲製造,未經容許,任何第三方企業和我的,不得從新分發。違者必究。

支持和反饋

該鏡像由希云爲企業客戶提供技術支持和保障,任何問題均可以直接反饋到: docker@csphere.cn

Dockerfile代碼地址:https://github.com/nicescale/microp_w_picpath-jenkins/

Docker技術如何落地企業帶來價值

希雲是Docker領域的專家,致力於經過Docker技術提供更好的雲計算產品和服務。希雲品牌下的產品包括了

  • COS容器操做系統

  • cSphere容器管理平臺

  • CDT基於容器的開發測試平臺

  • CShow基於容器的項目演示平臺-

  • CHub企業版Registry

並提供相關的培訓和諮詢服務

  • 微鏡像服務

  • Docker企業培訓

  • 應用Docker化諮詢

  • 軟件SaaS化諮詢

  • PaaS化諮詢

歡迎企業垂詢:

  • 電話:400-686-1560

  • 郵箱:contactus@csphere.cn

微信關注cSphere-CN

相關文章
相關標籤/搜索