欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Docker 安装 Jenkins , 并解决初始安装插件失败

程序员文章站 2024-01-13 17:49:28
安装 Jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那。 这里记录下 Docker 下怎么安装 Jenkins ,并解决初始安装插件失败问题。 安装插件失败,其实是拉取了官方的 Jenkins 镜像,然后在初始化安装插件时,会从国外的网站去获取,导致安装非常缓 ......

安装 jenkins 后,初始化下载插件总是失败,导致安装不成功,重试好几次都是卡在安装插件那。

这里记录下 docker 下怎么安装 jenkins ,并解决初始安装插件失败问题。

 

安装插件失败,其实是拉取了官方的 jenkins 镜像,然后在初始化安装插件时,会从国外的网站去获取,导致安装非常缓慢,或者安装失败。最好的解决方案时拉取 jenkins 中文社区 提供的 jenkins 镜像,即可解决。jenkins 中文官网 :https://www.jenkins.io/zh/

安装步骤

获取镜像

docker pull jenkinszh/jenkins-zh:latest

 docker官方镜像仓库 :https://hub.docker.com/

从这里找到 jenkins 中文镜像

 Docker 安装 Jenkins , 并解决初始安装插件失败

设置 jenkins 容器挂载目录

jenkins 容器启动后,会产生安装配置文件,需要把这些文件的生成地址改为,linux服务器上的目录。

目的:日后修改配置容易寻找。

创建 jenkins 生成目录   mkdir /home/jenkins_home

目录授权 chmod 777 /home/jenkins_home    不授权启动后无法生成文件

 启动命令

docker run -d -p 8085:8080 -p 50000:50000 --name myjenkins -v /home/jenkins_home/:/var/jenkins_home jenkinszh/jenkins-zh:latest 

命令解释:

 run        运行容器
-d           后台运行
-p           linux服务器端口 与 docker 容器端口映射
--name   自定义容器别名
-v           linux服务器目录 与 docker 容器目录挂载
最后名跟的时 拉取的镜像名和版本

注意:8085 是访问端口,只要没占用的都可以用。8080不可更改

-p 50000:50000 不可更改。 

/home/jenkins_home/ 本地的生成目录,可以自定义,与上一步创建并授权的目录一致即可

/var/jenkins_home   docker 容器目录,不可更改。

访问

服务器ip + 自定义端口    例: 192.168.0.200:8085

初始密码

docker ps  获取当前运行容器的id

docker logs 容器的id

在 logs 日志里面即可看到,类似这样

 Docker 安装 Jenkins , 并解决初始安装插件失败

插件安装

用中文社区提供的 jenkins 镜像 无需设置,直接安装即可,速度飞快。

附-官方镜像安装插件失败分析

以上面 jenkins 挂载的目录为例

在 jenkins_home 的目录下,hudson.model.updatecenter.xml 这个文件定义了 插件拉取的配置地址,默认的地址可以直接访问,你会发现,他连接的是 https://www.google.com/, 由于墙的原因,这个地址一直访问失败。

在 /jenkins_home/updates 目录下的 default.json 文件内容,就是 hudson.model.updatecenter.xml 定义的插件拉取的配置地址 里面的内容。即使你通过其他博客 修改了 default.json 的文件内容,当你再次 启动的时候,会立马还原过来,所以怎么修改都还不会生效。

而 jenkins 中文社区提供的镜像,这块已经处理好了,插件拉取的配置地址 已经换为国内镜像地址,所以插件下载非常快。

jenkins 中文社区 关于插件拉取的解释:

https://community.jenkins-zh.cn/t/jenkins/26

https://jenkins-zh.cn/wechat/articles/2019/11/2019-11-11-update-center-mirror-announcement/

建议了解一下