Docker安装Jenkins的详细步骤

0 次阅读

Docker安装Jenkins的详细步骤

Jenkins是一款广泛应用于持续集成(CI)和持续交付(CD)的自动化服务器,可以帮助开发团队实现代码构建、自动测试、项目部署等流程。相比传统安装方式,使用Docker部署Jenkins具有环境隔离、安装快速、迁移方便、版本管理简单等优势,非常适合开发测试环境以及企业级自动化部署场景。

本文将详细介绍如何通过Docker安装Jenkins,包括环境准备、镜像获取、容器创建、初始化配置、数据持久化以及常见问题处理。

一、安装前环境准备

使用Docker安装Jenkins之前,需要确保服务器已经安装Docker环境。

1. 查看Docker版本

执行以下命令确认Docker是否安装成功:

Bash
docker -v

如果返回类似信息:

Docker version 28.x.x

说明Docker环境正常。

如果服务器还没有安装Docker,可以先根据操作系统完成Docker安装。

2. 检查Docker服务状态

Linux系统可以执行:

Bash
systemctl status docker

如果Docker未启动,可以执行:

Bash
systemctl start docker

设置Docker开机自动启动:

Bash
systemctl enable docker

二、获取Jenkins Docker镜像

Docker Hub提供了官方Jenkins镜像,可以直接拉取使用。

推荐使用长期支持版本(LTS):

Bash
docker pull jenkins/jenkins:lts

查看已经下载的镜像:

Bash
docker images

输出示例:

REPOSITORY          TAG       IMAGE ID
jenkins/jenkins     lts       xxxxxxxx

选择LTS版本的原因是稳定性更高,适合生产环境使用。

三、创建Jenkins数据目录

Jenkins运行过程中会产生大量配置文件、插件、任务数据等内容。如果直接运行容器而不挂载数据目录,删除容器后所有配置都会丢失。

建议提前创建数据目录:

Bash
mkdir -p /data/jenkins_home

修改目录权限:

Bash
chown -R 1000:1000 /data/jenkins_home

Jenkins官方镜像默认使用UID为1000的用户运行,因此需要保证目录具有正确权限。

四、启动Jenkins容器

执行以下命令创建Jenkins容器:

Bash
docker run -d 
--name jenkins 
-p 8080:8080 
-p 50000:50000 
-v /data/jenkins_home:/var/jenkins_home 
jenkins/jenkins:lts

参数说明:

参数作用
-d后台运行容器
--name jenkins指定容器名称
-p 8080:8080映射Jenkins Web访问端口
-p 50000:50000映射Agent通信端口
-v挂载Jenkins数据目录

启动完成后,可以查看容器状态:

Bash
docker ps

正常情况下会看到:

CONTAINER ID   IMAGE                  STATUS
xxxxxx         jenkins/jenkins:lts    Up

五、访问Jenkins管理页面

打开浏览器访问:

http://服务器IP:8080

首次进入Jenkins时,会要求输入管理员初始化密码。

可以通过Docker日志查看:

Bash
docker logs jenkins

找到类似内容:

*************************************************************
Jenkins initial setup is required.
An admin user has been created and a password generated.
*************************************************************

xxxxxxxxxxxxxxxx

也可以直接查看密码文件:

Bash
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

复制密码后输入页面,即可进入初始化流程。

六、完成Jenkins初始化配置

进入初始化页面后,通常包含以下步骤:

1. 安装推荐插件

Jenkins提供两种插件安装方式:

  • 安装推荐插件

  • 自定义选择插件

对于首次部署,建议选择:

Install suggested plugins

系统会自动安装常用插件,例如:

  • Git插件

  • Pipeline插件

  • Maven插件

  • Docker插件

2. 创建管理员账号

填写:

  • 用户名

  • 密码

  • 邮箱

创建完成后,该账号用于后续登录管理。

3. 配置访问地址

设置Jenkins URL,例如:

http://192.168.1.100:8080/

确认后即可进入Jenkins控制台。

七、配置Docker中的Jenkins使用宿主机Docker

很多CI/CD场景需要Jenkins调用Docker执行构建任务,例如:

  • 构建Docker镜像

  • 启动测试环境

  • 自动发布服务

默认情况下,Jenkins容器内部无法访问宿主机Docker。

方法一:挂载Docker Socket

停止当前容器:

Bash
docker stop jenkins
docker rm jenkins

重新启动:

Bash
docker run -d 
--name jenkins 
-p 8080:8080 
-p 50000:50000 
-v /data/jenkins_home:/var/jenkins_home 
-v /var/run/docker.sock:/var/run/docker.sock 
jenkins/jenkins:lts

这样Jenkins可以直接调用宿主机Docker。

方法二:安装Docker客户端

进入Jenkins容器:

Bash
docker exec -it jenkins bash

安装Docker客户端:

Bash
apt update
apt install docker.io -y

然后测试:

Bash
docker version

如果能够返回Docker信息,说明配置成功。

八、Jenkins插件安装与管理

进入:

Manage Jenkins

选择:

Plugins

可以安装更多插件。

常用插件包括:

Git插件

用于拉取代码仓库:

Git Plugin

Pipeline插件

用于编写自动化流水线:

Pipeline

Docker插件

用于Docker环境管理:

Docker Pipeline

Maven插件

用于Java项目自动构建:

Maven Integration

九、设置Jenkins自动启动

如果服务器重启,需要让Jenkins容器自动恢复运行。

创建容器时增加:

Bash
--restart=always

完整示例:

Bash
docker run -d 
--name jenkins 
--restart=always 
-p 8080:8080 
-p 50000:50000 
-v /data/jenkins_home:/var/jenkins_home 
jenkins/jenkins:lts

参数说明:

  • always:Docker启动时自动启动容器

  • unless-stopped:除非手动停止,否则自动启动

生产环境通常推荐:

Bash
--restart=unless-stopped

十、Jenkins容器升级方法

Jenkins版本更新时,不建议直接修改现有容器。

推荐流程:

1. 备份数据

由于数据已经挂载:

Bash
/data/jenkins_home

只需要备份该目录即可:

Bash
tar -czvf jenkins_backup.tar.gz /data/jenkins_home

2. 拉取新版镜像

例如:

Bash
docker pull jenkins/jenkins:lts

3. 删除旧容器

Bash
docker stop jenkins
docker rm jenkins

4. 使用新镜像重新创建

Bash
docker run -d 
--name jenkins 
--restart=unless-stopped 
-p 8080:8080 
-p 50000:50000 
-v /data/jenkins_home:/var/jenkins_home 
jenkins/jenkins:lts

由于数据目录保持不变,原有任务、插件和配置都会恢复。

十一、常见问题解决

1. 页面无法访问

检查容器状态:

Bash
docker ps

查看日志:

Bash
docker logs jenkins

确认8080端口是否开放:

Bash
firewall-cmd --list-ports

开放端口:

Bash
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

2. Jenkins启动权限错误

如果出现:

Permission denied

通常是数据目录权限问题。

执行:

Bash
chown -R 1000:1000 /data/jenkins_home

然后重新启动容器。

3. 插件安装失败

可能原因:

  • 网络连接异常

  • Jenkins版本兼容问题

  • 插件源访问失败

可以修改插件更新地址:

进入:

Manage Jenkins
→ Plugins
→ Advanced

修改Update Site。

4. Jenkins占用内存过高

可以限制Docker资源:

Bash
docker update 
--memory=2g 
--memory-swap=2g 
jenkins

同时可以通过JVM参数优化:

Bash
JAVA_OPTS="-Xms512m -Xmx1024m"

十二、Docker部署Jenkins的最佳实践

在生产环境中部署Jenkins时,建议遵循以下原则:

1. 数据必须持久化

不要直接使用容器内部目录保存Jenkins数据,否则容器删除后无法恢复。

2. 定期备份

重点备份:

/var/jenkins_home

其中包含:

  • 用户信息

  • 构建任务

  • 插件

  • 系统配置

3. 使用固定版本镜像

生产环境不要直接使用:

Bash
jenkins/jenkins:latest

建议:

Bash
jenkins/jenkins:lts

或者指定具体版本。

4. 配置访问安全

建议:

  • 开启HTTPS

  • 限制访问IP

  • 使用强密码

  • 定期更新插件

总结

通过Docker安装Jenkins可以快速搭建稳定的自动化持续集成环境。整个流程主要包括安装Docker、拉取Jenkins镜像、创建数据目录、启动容器、完成初始化配置以及优化运行环境。

相比传统安装方式,Docker部署Jenkins不仅降低了环境配置成本,还方便后续升级、迁移和维护。结合Git、Docker、Maven以及Pipeline流水线,可以快速构建完整的自动化开发部署体系,为企业项目持续交付提供可靠支持。