DevOps之二--Docker快速安装Jenkins

导航

  • DevOps之一--自动化CI、CD基础概念
  • DevOps之二--Docker快速安装Jenkins
  • DevOps之三--Jenkins + Gitblit +Maven快速构建 springboot 项目
  • DevOps之四--Publish over SSH远程部署
  • DevOps之五-- Gitblit 触发 Jenkins

一、安装 docker环境

可以参考Linux 安装 Docker,docker-compose

二、安装 Jenkins

Jenkins官方文档

1.拉取 Jenkins 镜像

docker pull jenkins/jenkins:latest-jdk8
  • 【采坑点】注意在docker镜像库搜索版本号时,应搜索 jenkins/jenkins,目前最新镜像维护的是这个名称。jenkins 这个镜像名称,最新的版本都是几年前维护的。
    jenkins/jenkins.png

    jenkins.png

2.启动 Jenkins 命令

创建/var/jenkins_home 文件夹,设置权限 chmod 777 /var/jenkins_home

docker run -itd -p 9080:8080 -p 9081:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /home/run/apache-maven-3.5.4:/usr/local/maven --name jenkinsTest  jenkins/jenkins:latest-jdk8

详解:

  • -v /var/jenkins_home:/var/jenkins_home 这是后续构建项目的 workspace,构建出来的包也在这个目录下,同时为了配置 Jenkins方便。
  • -v /home/run/apache-maven-3.5.4:/usr/local/maven 因为容器中不带 Maven配置,所以把宿主机的 Maven 直接映射到容器内,方便后续使用。
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷

3. 查看容器是否启动成功

  • 命令验证
docker ps 
  • image.png
  • 浏览器输入 url:host (127.0.0.1:9080)看到以下页面证明 jenkins 启动成功


    image.png

4.【踩坑】如果安装完成启动时卡在下面页面

  • 问题:国内访问国外安装插件的问题
  • 解决方案:使用国内插件库清华源
  • image.png

打开 jenkins的配置文件

vi /var/jenkins_home/hudson.model.UpdateCenter.xml 

修改配置为



  
    default
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
  

安装成功后首页如下:


image.png

5.获取管理员账号密码

vi /var/jenkins_home/secrets/initialAdminPassword

6.输入密码点击【继续】

7.选择"安装推荐的插件"

image.png

image.png

8.【采坑】安装插件比较慢

问题:Jenkins安装插件比较慢或比较卡
解决方案:设置 Jenkins 搜索引擎使用百度,不再使用google 搜索

# 在/var/jenkins_home/updates路径下执行一下命令,替换 default.json 中的搜索引擎地址

sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
  • 配置完成后记得重启 jenkins,否则不生效
    jenkins 重启方式:浏览器访问127.0.0.1:9080/restart

9.输入账号密码创建管理员账户

10.实例配置,使用默认

image.png

11.Jenkins 就绪,开始使用

image.png

12.【踩坑】ruby-runtime安装失败,导致 hook 插件安装失败

问题:docker安装Jenkins默认使用的 latest 版本镜像,该镜像是 JDK 11, ruby-runtime插件目前只能支持到 JDK 8,所以安装失败。
解决方案一: 下载一个低版本jkd,将其拷贝到jenkins容器中, 然后偷梁换柱把低版本的jdk替换掉高版本的。
解决方案二:重新下载 JDK 8的 jenkins 镜像,具体操作如上(之所以重新下载,是因为我们的项目稳定版本是使用的 JDK8,这样可以避免后续的很多问题)。

# 在容器外下载就行
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u262-b10/openlogic-openjdk-8u262-b10-linux-x64.tar.gz
# 将下载的jdk拷贝到容器内
docker cp openlogic-openjdk-8u262-b10-linux-x64.tar.gz jenkins:/usr/local
# 以root用户进入容器, -u 指定root用户
docker exec -it -u root jenkins /bin/bash
# 解压 JDK 文件
tar -xvf openlogic-openjdk-8u262-b10-linux-x64.tar.gz
# 改个名
mv openlogic-openjdk-8u262-b10-linux-64/ jdk8
# 找找java命令在哪儿 在 /opt/java/openjdk/bin/java
whereis java
# 先备份一下原java命令
mv /opt/java/openjdk/bin/java /opt/java/openjdk/bin/java.bak
# 偷梁换柱
ln -s /usr/local/jdk8/bin/java /opt/java/openjdk/bin/java

# 测试一下
java -version

换完低版本,回去继续将ruby-runtime插件,装完插件再把java版本改回来

rm -f /opt/java/openjdk/bin/java
mv /opt/java/openjdk/bin/java.bak /opt/java/openjdk/bin/java

-------------------------------------------END Jenkins 安装完成------------------------------------

你可能感兴趣的:(DevOps之二--Docker快速安装Jenkins)