在上一节我们是将Jenkins打包后的jar包直接放在Linux中运行的;下面我们示例,将Jenkins获得的jar包放进同一Linux下的Docker的容器中,并运行。
从/etc/group
文件中在nogroup中删除jenkins账号
将jenkins账号分别加入到root组中 gpasswd -a root jenkins
修改/etc/default/jenkins
文件中
JENKINS_USER=root
JENKINS_GROUP=root
重启服务器,搞定
注:可能还需要将/var/lib/jenkins/
中用户指定为rootJENKINS_USER=root
。
提示:此准备步骤的目的是,ready一个docker环境;如果你已具备自己的docker环境,那么可跳过此步骤。
第一步:从Docker官方仓库搜索镜像docker search justrydeng
注:此镜像是本人制作并上传到仓库中的;所以如果想自己做同样功能的镜像,那么可以参考docker相关笔记在Docker中部署运行jar示例
第二步:docker pull justrydeng/common-run-jar
抓取(下载)此镜像
第三步:以该镜像为基础,根据项目端口,定制化生成docker容器
docker run -p 8080:8080 --name jenkins-docker-test -d justrydeng/common-run-jar
注:因为知道要运行的jar包需要的端口为docker中的8080,所以本人将docker中的8080端口,与宿主机的端口(这里干脆也8080)映射起来。其中,指令-p 8080/8080里,前面的8080为宿主机端口,后面的8080为容器端口
此时,我们已经创建了一个名为jenkins-docker-test的容器了。如果此时我们只想在docker中运行jar包的话,那么只需将xxx.jar包改名为app.jar,放入jenkins-docker-test容器的/jarAppDir/目录下,再start启动容器即可实现docker中运行jar包了
如果需要更新jar包,那么需要:第一步,stop该容器;第二步,以新的app.jar替换容器中旧的app.jar;第三步:再次start启动该容器即可
提示:如果上述操作出现类似这样的错误提示:
docker: Error response from daemon: driver failed programming external connectivity on endpoint jenkins-docker-test (26160e69b714ec8b1f77fa080fa2865a50d0fae9455ee3466088d6f1d820fa4c): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
那么需要systemctl restart docker
重启Docker
声明:下面我不会再介绍每一步的详细作用,如果想了解细节,可详见新建Jenkins任务之基础知识(入门级示例)
给出上图中涉及到的指令,文字版:
# 将当前位置切换至项目根目录下
cd /var/lib/jenkins/workspace/jenkins-docker-同一机器中/
# maven打包(可以将mvn clean 、 mvn install 合并到一起写)
mvn clean install
给出上图中涉及到的指令,文字版:
# stop该jar包对应的容器
docker stop jenkins-docker-test
# 将新的jar包拷贝至容器中的指令目录下,并重命名为jar.jar (注:如果该目录下本来就有jar.jar,那么原jar包会被替换)
docker cp /var/lib/jenkins/workspace/jenkins-docker-同一机器中/target/jenkins-0.0.1-SNAPSHOT.jar jenkins-docker-test:/jarAppDir/app.jar
# start该jar包对应的容器即可
docker start jenkins-docker-test
保存
访问http://10.8.109.60:8080/jenkins/test?name=JustryDeng
给出controller对应方法:
修改代码后 => 提交至SVN => 再次构建 => 再次访问http://10.8.109.60:8080/jenkins/test?name=JustryDeng
给出修改后的controller对应方法:
由此可见,Jenkins与Docker位于同一台电脑上的联合使用,演示成功!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。