使用Docker部署Jenkins相关问题总结
环境
宿主机:Centos 7 x64
Docker Version:24.0.7
Jenkins Version:2.434
问题1:docker: not found
案例
Jenkins界面中执行构建,在控制台输出异常,具体异常信息如下图:

原因
Jenkins没有配置全局的PATH环境变量
解决
1、在宿主机上执行以下命令,获取PATH
echo $PATH
执行结果如下:

2、将内容复制出来,并添加到Jenkins时的环境变量中,系统管理>系统配置>全局属性,勾选环境变量,添加对应键值,添加完保存即可。

参考链接
Jenkins执行shell脚本报错:docker: command not found
问题2:docker: Permission denied
案例
Jenkins界面中执行构建,在控制台输出异常,具体异常信息如下图:

原因
Jenkins用户没有docker命令的执行权限
解决
1、挂载/bin/docker目录,创建容器时使用如下命令格式:
docker run -itd -p 10240:8080 -p 10241:50000 -v /home/jenkins/jenkins_mount:/var/jenkins_home -v $(which docker):/bin/docker -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock --privileged=true --name [你的容器名称] [镜像名]
上面命令的端口映射、挂载的目录路径、容器名称以及镜像名根据自己的实际情况进行修改。
比较关键的就是-v $(which docker):/bin/docker以及-v /var/run/docker.sock:/var/run/docker.sock这两个挂载。
2、修改docker.sock的权限
在宿主机中执行以下命令
chmod 777 /var/run/docker.sock
再次执行构建,问题解决。
Tips:
- 可能以上方法并不能解决你遇到的问题,需根据实际情况而论,因为当时在网上找了很多方法,比如给jenkins添加docker用户组,给各种文件夹添加权限等,发现都不好使,最后是通过以上的方法解决。
- 执行chmod 777 /var/run/docker.sock这个命令是将文件的权限设置为最高权限,存在一定的安全隐患,如果你只是在本地的虚拟机上学习使用的话无所谓,但如果是公司的线上环境不推荐这种方式,可以尝试查找其他资料去解决。
参考链接
在docker中运行的jenkins中使用docker时遇到错误
问题3:jenkins使用Gitee ssh源码管理异常,Host key verification failed.
案例
jenkins中源码管理使用Gitee ssh秘钥的方式异常,具体异常信息如下图:

原因
要使用在jenkins容器内部或者以jenkins用户身份生成的ssh私钥,最重要的是要执行验证,指定远程git的引用。
解决
1、进入到jenkins容器内部,执行cd ~切换到jenkins文件目录下,执行git命令git ls-remote -h git@gitee.com:xxx.git HEAD,输入yes后回车。

2、看到生成了这个文件就可以了

3、再次尝试问题解决

参考链接
Jenkins容器内部配置ssh
Jenkins源码管理git报错:Host key verification failed
好了,至此分享就结束了,希望这些能帮助到您,如文中内容有误或者您有其他看法,还望在评论区指正或讨论。
END

浙公网安备 33010602011771号