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