Jenkins通过ConfigureCloud添加集群Docker
作者:互联网
环境信息
Linux环境
Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019
> cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
Jenkins版本
jenkins需要安装的docker插件
环境说明
CentOs7安装的Docker环境,使用Docker安装的Jenkins服务。
附录
[https://docs.docker.com/engine/install/centos/](Centos7 Docker安装指南)
[https://www.jenkins.io/doc/book/installing/docker/](Jenkins docker安装指南)
配置Docker Cloud节点
注意:需要安装docker-plugin插件噢,不然应该没有这个选项
点击Manage Jenkins功能项后,打开节点管理列表项
点击我们此次的主角吧
相信你那应该有这个Add a new Cloud按钮。添加docker。
会出现图中所示的这样,字段name名称是我这边刚刚手动输入的。
填写你能记住的Name名称吧。
然后点击Docker Cloud details...项,我们配置Dockers的连接地址等信息吧。
这里的docker host url是刚刚我这边手动输入的配置项。这个docker监听地址需要配置下docker守护进程,监听的http端口。
https://docs.docker.com/engine/install/linux-postinstall/#configure-where-the-docker-daemon-listens-for-connections
别忘勾选上启用噢
这里进行告知 "同时使用daemon.json和systemd单元文件进行配置会冲突导致docker无法启动";但是我这边没有使用systemd单元文件的情况下,在/etc/docker/daemon.json创建个空的文件都会导致docker服务启动报告,属实很奇葩。
最后我这边使用的是systemctl edit docker.service
进行配置的守护进程监听的地址。
如果使用的nano编辑器,请进行Ctrl + ^字母建键
进行操作保存和退出等操作噢,因为nano没有vim模式区分的操作。
按照docker文档配置完守护进程监听的地址后,我们继续下一步。
其他的参数根据需要自行调节。
接下来,我们点击Docker Agent Templates,添加Jenkins代理使用的Docker镜像。
Docker Image镜像我们去哪找呢?能配置什么呢?
[https://plugins.jenkins.io/docker-plugin/](docker plugin地址),我们可以看到,docker Cloud是由docker plugin插件提供的。所以我们点击打开插件的主页寻找帮助。
看,我们找到关于docker cloud云的创建指南。
提供了三种创建docker代理的方式。这里我们使用 JNLP 代理启动的方式。
配置Docker template
这里的字段都有❓说明信息内容。其实没啥可说的。
根据所需的进行看字段的描述吧。
这里额外说明下Connect method,docker插件提供了三种连接方式。
这里与Docker插件,jenkins代理镜像是有关的。需要注意。当选择不通的连接方式,需要看下是否满足前置要求。
DockerTemplate就是这么配置的。
我对这里的配置项,DockerTemplate就是进行docker run <镜像> <args>
各种参数的配置。然后当jenkins需要启动docker容器的时候,会根据你这里配置的模板进行启动。
1(DockerTemplate)>N(DockerContainer);这里的docker容器会根据你配置的容器上限进行限制。
最后点击 Apply 和 Save 就可以了。
查看配置的Docker集群。
如果要查询配置的Docker集群,我们需要去ManageJenkins -> Docker 进行查看。
可以看到我们通过ConfigureCloud创建的名称项。
my_cnblog_docker就是我们刚刚创建出来的。
点击名称进去docker server状态页面。
这里的docker container列出的第一项是我这边的jenkins的大脑,也就是控制端。
因为我这里的jenkins是通过docker启动的。所以肯定会有一项,不然,我能访问jenkins就有鬼了。。。哈哈
关于jenkins任务的建立这里就不贴图了,因为滚动条有点长哈。
新建JenkinsItem -> 选择Pipeline -> 点击OK按钮。
然后配置Pipeline脚本内容。
pipeline {
agent {
label 'my_docker'
}
stages {
stage('Test') {
steps {
sh 'java -version'
}
}
}
}
最后,我们 save 之后,点击 立即构建(Build Now)。
就可以在左下角看到构建记录了。
应该可以执行成功。
最后有什么问题在评论区留言讨论吧,共同学习。
常见问题
为什么通过ConfigureCloud配置了Docker集群。但是在管理Jenkins里,打开dockers看节点的数量还是0或者本身呢?
这跟你配置的Docker连接方式有关,本文使用了JNLP的方式通过Docker启动了Jenkins代理。
你可以在上面的steps里末尾加上sleep 10s
等待10s后结束,你可以在任务运行的期间,打开所使用的docker服务器,执行docker ps
,应该可以看到有关jenkins/inbound-agent镜像的容器已经运行起来了,任务结束后,docker容器也会自动的stop和rm停止并删除。
JNLP的翻译:
容器只会被传递一个带有正确密码的初始 docker run 命令。而remoting agent会通过网络与master建立连接。因此,代理必须能够通过其地址和端口访问主控。这句话真实核心而简朴啊。
标签:ConfigureCloud,配置,点击,Jenkins,jenkins,Docker,docker 来源: https://www.cnblogs.com/XingXiaoMeng/p/16685986.html