$ 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