$ 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鏡像啓動後,打開瀏覽器 http://your-ip:8080
, 會提示輸入用戶名密碼,這裏默認用戶名admin,密碼admin。進入後在 用戶
菜單裏修改密碼。github
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
你能夠在master上構建,但若是想在slave上構建的話,必須作好50000端口映射,這是用來鏈接slave agent的。
你也許想修改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的運行參數:
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技術提供更好的雲計算產品和服務。希雲品牌下的產品包括了
COS容器操做系統
cSphere容器管理平臺
CDT基於容器的開發測試平臺
CShow基於容器的項目演示平臺-
CHub企業版Registry
並提供相關的培訓和諮詢服務
微鏡像服務
Docker企業培訓
應用Docker化諮詢
軟件SaaS化諮詢
PaaS化諮詢
歡迎企業垂詢:
電話:400-686-1560
郵箱:contactus@csphere.cn