文章目录
使用Docker容器做Jenkins代理节点
本文描述了如何将Jenkins代理节点(Jenkins Slave或Jenkins Agent)运行在Docker节点上,并通过JNLP协议在Jenkins Master和Docker节点间进行通讯。
配置一个Docker节点
在一台VM上,参见OneDayDevOps:一键部署DevOps平台一键安装Docker。
开启该Docker的远程访问API,使得Jenkins Master可以和Docker通讯。
修改/usr/lib/systemd/system/docker.service
,将ExecStart=/usr/bin/dockerd
改为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock
重新加载Docker配置和重启Docker:
systemctl daemon-reload
systemctl restart docker
systemctl status docker
开启防火墙端口:
firewall-cmd --zone=public --add-port=4243/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
在Docker节点上测试:
curl http://localhost:4243/version
在Jenkins Master上测试:
curl http://<docker_host>:4243/version
注意:如果该Docker节点暴露在外网环境,需要对允许访问的IP和credential做严格限制。
参考文档:
配置Jenkins Master
配置JNLP端口
打开Manage Jenkins / Configure Global Security
在Agents下,选择 TCP port for JNLP agents为Fixed,输入一个端口号,比如46477
可以运行netstat -tnlp
查看该端口是否被占用。
打开该端口的防火墙设置: