Jenkins 是一款流行的持续集成和持续交付(CI/CD)工具,它能够自动化软件开发过程中的构建、测试和部署等环节。通过使用 Docker 部署 Jenkins,可以轻松地在任何支持 Docker 的平台上运行 Jenkins,同时还能利用 Docker 的隔离性来确保开发环境的一致性和可移植性。

拉取镜像并运行 Jenkins 容器

首先,运行以下命令来启动 Jenkins 容器:

docker run \
  -d \
  -u root \
  -p 8888:8080 \
  -v /data/jenkins:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /etc/docker:/etc/docker \
  -v /usr/local/jdk17:/usr/local/java \
  -v /usr/local/maven:/usr/local/maven \
  -v /etc/localtime:/etc/localtime:ro \
  -e JAVA_OPTS=-Dhudson.model.DownloadService.noSignatureCheck=true \
  --name jenkins \
  jenkins/jenkins:2.484

这个命令做了以下几件事情:

  • -d:后台运行容器
  • -u root:以 root 用户运行 Jenkins
  • -p 8888:8080:将容器的 8080 端口映射到宿主机的 8888 端口
  • -v:挂载卷,用于持久化数据和共享宿主机的 Docker、JDK、Maven、时区文件

其中,

-v /var/run/docker.sock:/var/run/docker.sock: 通过将宿主机的Docker套接字文件映射到容器内,容器内的应用可以直接与宿主机上的Docker守护进程通信。这样,当在容器内执行Docker命令时,实际上是在宿主机上启动新的容器,而不是在容器内部启动子容器。这些新启动的容器是宿主机上的“兄弟容器”。

-v /usr/bin/docker:/usr/bin/docker: 此映射确保容器内部可以使用宿主机上的Docker客户端二进制文件。这样,容器中的应用可以直接执行宿主机上的Docker命令,而无需在容器内部安装Docker客户端

-v /etc/docker:/etc/docker: 通过挂载宿主机的Docker配置目录到容器中,容器内的Docker客户端可以使用宿主机的配置文件。这包括配置国内镜像加速、非SSL安全访问的白名单设置等,从而确保容器内的Docker操作遵循宿主机的配置策略。

docker安装的jenkins,已经默认安装了JDK11和Git。我们这里挂载了自己宿主机中的JDK17和maven。

获取管理员密码

运行以下命令来查看 Jenkins 启动日志,并获取管理员密码:

docker logs jenkins

曾续缘

日志中会包含形如 c33005a3c3044324bd4fed9040fe3e1c 的密码。

开启防火墙端口

为了让外部可以访问 Jenkins,需要开启防火墙端口:

firewall-cmd --zone=public --add-port=8888/tcp --permanent
systemctl restart firewalld
firewall-cmd --zone=public --list-ports

配置 Jenkins 镜像源

为了加速插件下载,修改 Jenkins 的镜像源:

vim /data/jenkins/hudson.model.UpdateCenter.xml

将内容修改为:

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

曾续缘

重启 Jenkins 容器:

docker restart jenkins

初始化 Jenkins

在浏览器中访问 http://192.168.101.101:8888/,并输入之前记录的管理员密码。

按照提示完成 Jenkins 的初始化设置。

曾续缘

选择”选择插件来安装“,因为在这里安装插件大多会失败。

曾续缘

选择都不安装。

曾续缘

创建一个用户,也可以使用admin账户继续。

曾续缘

配置 JDK 和 Maven

在 Jenkins 系统管理中配置 JDK 和 Maven 的路径:

  • JDK 路径:/usr/local/java

    曾续缘

  • Maven 路径:/usr/local/maven

    曾续缘

配置全局环境变量

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/java/bin:/usr/local/maven/bin

曾续缘

可选:配置容器内的环境变量

如果我们需要修改容器自带的JDK11,需要配置容器内的环境变量,期间还可以添加mvn的环境变量。

进入 Jenkins 容器,

docker exec -it jenkins /bin/bash

安装文本编辑器vim:

apt-get update
apt-get install vim -y
vim /etc/profile

编辑 /etc/profile 文件

vim /etc/profile

然后添加以下内容:

export JAVA_HOME=/usr/local/java  
export PATH=$PATH:${JAVA_HOME}/bin  
export MAVEN_HOME=/usr/local/maven  
export PATH=$PATH:${MAVEN_HOME}/bin

曾续缘

使环境变量生效:

source /etc/profile

检查 Java 和 Maven 是否配置正确:

java -version
mvn -v

曾续缘

注意:每次重启 Jenkins 后都需要重新进入容器执行 source /etc/profile,不然mvn环境变量无法生效。

安装所需的插件

安装 Jenkins 插件,如“Locale”、“Localization: Chinese (Simplified)”、“Maven Integration”等。

Locale
Localization: Chinese (Simplified)
Maven Integration
Pipeline
Pipeline: Stage View

曾续缘

安装了maven插件后,进行maven的配置

曾续缘

重启 Jenkins

使用如下命令重启。

docker restart jenkins

重启 Jenkins 后,系统会显示为中文界面。

参考链接

https://blog.csdn.net/weixin_48878440/article/details/139484557

参考链接:https://cengxuyuan.cn

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐