docker安装Jenkins的坑
目录:1. 安装插件提示: There were errors checking the update sites: SocketException: Connection timed out (Read failed)2. There were errors checking the update sites: IOException: Could not find JSON in http:/
目录:
- 1. 安装插件提示: There were errors checking the update sites: SocketException: Connection timed out (Read failed)
- 2. There were errors checking the update sites: IOException: Could not find JSON in http://updates.jenkins-zh.cn/update-center.json?id=default&version=2.222.4
- 3. ERROR: No such settings file /usr/local/maven/conf/setting.xml exists
- 4. Jenkins构建docker镜像,提示Dockerfile不存在
- 5. [Docker] ERROR: Failed to exec start:Connect to 192.168.107.51:2375 [/192.168.107.51] failed: Connection refused (Connection refused)
1. 安装插件提示: There were errors checking the update sites: SocketException: Connection timed out (Read failed)
将插件管理里面的地址:https
改为 http
。然后点击submit–>Check Now
然后出现新的异常:There were errors checking the update sites: IOException: Could not find JSON in http://updates.jenkins-zh.cn/update-center.json?id=default&version=2.222.4
2. There were errors checking the update sites: IOException: Could not find JSON in http://updates.jenkins-zh.cn/update-center.json?id=default&version=2.222.4
如果http
还是请求不通,则改回https
,然后单独在浏览器里访问报错的链接:https://updates.jenkins-zh.cn/update-center.json
发现是正常的,返回了一个很大的JSON,里面包含了Jenkins的版本配置信息。
这时,再次点击问题1里面的Submit Now
,应该就可以正常了。这时,插件列表页也可以正常显示了。
3. ERROR: No such settings file /usr/local/maven/conf/setting.xml exists
这是由于Jenkins里面配置maven配置文件时,路径有误。在全局工具类里面配置maven配置文件时,需要指定的是Jenkins挂载的maven路径。
Jenkins挂载目录
-v /usr/local/maven/apache-maven-3.6.3:/usr/local/maven
那么配置的时候,指定settings.xml 文件地址应该为:/usr/local/maven/conf/settings.xml
注意名称settings.xml
不要写错了,否则一直提示找不到该xml文件。如果还不行则将当前maven文件夹权限改为777
命令:chmod -R 777 apache-maven-3.6.3
4. Jenkins构建docker镜像,提示Dockerfile不存在
[Docker] ERROR: Failed to create docker image: Configured Docker file 'Dockerfile' does not exist.
ERROR: Build step failed with exception
java.lang.IllegalArgumentException: Configured Docker file 'Dockerfile' does not exist.
at org.jenkinsci.plugins.dockerbuildstep.cmd.remote.CreateImageRemoteCallable.call(CreateImageRemoteCallable.java:68)
at org.jenkinsci.plugins.dockerbuildstep.cmd.remote.CreateImageRemoteCallable.call(CreateImageRemoteCallable.java:29)
at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:115)
Caused: java.lang.IllegalArgumentException
at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:119)
at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:77)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.build(MavenModuleSetBuild.java:944)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:894)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1856)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:543)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:428)
Build step 'Execute Docker command' marked build as failure
Finished: FAILURE
如果Jenkins拉取的是svn上的单模块的项目,应该不会出现在这种问题。又或者是因为github上的代码配置路径的问题。
我这里在管理代码时多加了一层目录,github项目名下,又包含了一层项目名,然后Dockerfile是在项目下,所以导致这里构建的时候,提示找不到Dockerfile文件。
接着试着将Dockerfile 拷贝一份出来,这里还有个问题就是,手动copy的文件,需要修改文件所属的用户和组,否则Jenkins是没有权限读取复制后的文件的。
然后构建试下。
5. [Docker] ERROR: Failed to exec start:Connect to 192.168.107.51:2375 [/192.168.107.51] failed: Connection refused (Connection refused)
这时,外部浏览器访问:http://192.168.104.51:2375/version
是访问不通的,正常应该返回一个docker 版本的信息JSON。
然后看下之前修改的/lib/systemd/system/docker.service
,发现ExecStart
还是默认值,2375端口没有开放。
这里改为:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
如果是云服务器的话,开放2375端口后,记得要设置IP白名单,防止服务器被用来挖矿。
6. jenkins创建任务后不要修改任务名!!!!!
这个是真的有点坑,在我创建任务后,构建、打包docker镜像都是正常的,然后发现任务名不太合适,就改了一下。然后问题就来了。
打包的docker镜像,一直不是最新的代码,同时新建的两个任务,另一个就是正常的。刚开始以为是代码没有拉下来,结果去了jenkins的工作空间里面看代码,发现确实是最新的代码。
这时候还没有意识到构建docker镜像出问题了。
最后实在想不出来是哪的问题了,就看了下构建的日志,发现新构建的镜像记录,都是走的cache,下面是正常的构建过程:
在找到问题后,删除之前重命名的任务,为了保险起见,又接着删除jenkins工作空间的任务文件夹,然后看了下docker镜像列表,发现重命名任务后,构建的的docker镜像除了tag不一样,ID都是一样的,这也难怪后面部署的都不是最新的代码了。
在删除文件夹和历史任务后,重新新建任务,舒舒服服,一次搞定!
更多推荐
所有评论(0)