【Linux】Docker部署Jenkins

Docker部署Jenkins

参考链接: https://github.com/jenkinsci/docker/blob/master/README.md

1 准备目录

在home目录下创建jenkins相关目录,用于挂载容器数据,避免容器删除后数据丢失。

bash 复制代码
mkdir /home/jenkins
cd /home/jenkins
mkdir jenkins_home
# 把当前目录的拥有者赋值给uid 1000(Jenkins容器默认使用该uid)
chown -R 1000 jenkins_home
# 创建maven仓库文件目录(用于后续maven构建项目)
mkdir -p maven/m2

将本地资源目录下的setting.xml文件,上传到 /home/jenkins/maven/m2 目录中。

2 开放端口

Jenkins默认需要8380端口(web访问)和50000端口(代理通信、可选),端口开放方式需根据服务器类型区分,避免配置无效。

重要提醒:若使用云服务器(阿里云、腾讯云等),无需执行以下防火墙命令,直接在云控制台的安全组中配置入方向规则,开放8380和50000端口即可。

若为本地服务器或虚拟机,执行以下命令开放端口并使其永久生效:

bash 复制代码
# 开放8380端口(Jenkins访问端口),永久生效
firewall-cmd --add-port 8380/tcp --permanent
# 重新加载防火墙,使配置生效
firewall-cmd --reload

3 服务编排

采用Docker -Compose编排服务,可简化部署命令,统一管理容器配置,后续启停、重启服务更便捷。需在之前创建的/home/jenkins目录下操作。

bash 复制代码
vi docker-compose.yml

在文件中写入下列内容后保存(若有现成yml文件,可直接上传到jenkins目录,跳过本步骤):

yaml 复制代码
version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts  # 使用Jenkins稳定版镜像
    container_name: jenkins     # 容器名称,便于后续操作
    user: root                  # 以root用户运行,避免权限问题
    privileged: true            # 授予容器特权,解决挂载目录权限问题
    environment:
      TZ: Asia/Shanghai         # 设置时区为上海,避免时间错乱
    ports:
      - "8380:8080"             # 映射Jenkinsweb访问端口(宿主机:容器)
      - "50000:50000"           # 映射Jenkins代理端口(用于分布式构建)
    volumes:
      - /home/jenkins/jenkins_home:/var/jenkins_home  # 挂载Jenkins工作目录
      - /home/jenkins/maven/m2:/root/.m2              # 挂载maven仓库目录
      - /var/run/docker.sock:/var/run/docker.sock      # 挂载docker守护进程,实现容器内操作docker

配置完成后,按Esc键,输入:wq保存并退出编辑。

4 启动服务

服务编排完成后,可通过简单命令实现服务的启动、停止、重启,首次启动推荐使用前台启动,便于查看启动日志和初始密码。

4.1 前台启动(首次启动推荐)

前台启动可实时查看容器启动过程和日志,首次启动会自动拉取Jenkins镜像,根据网络速度不同,等待时间约5-15分钟。

bash 复制代码
# 在/home/jenkins目录下执行,前台启动Jenkins服务
docker-compose up

首次启动拉取镜像的效果如下:

当日志中出现以下内容时,说明Jenkins服务启动成功,同时会生成管理员初始密码(每个人的密码不同,以自身日志为准):

4.2 停止前台启动

停止前台运行的服务,直接按Ctrl \+ C即可,停止成功的日志示例:

4.3 后台启动

前台启动会占用终端,关闭终端后服务会停止,日常使用建议切换为后台启动模式,确保服务持续运行。

bash 复制代码
# 后台启动Jenkins服务,参数-d表示后台运行
docker-compose up -d

启动成功提示:

4.4 查看服务状态

启动服务后,可通过以下命令查看Jenkins容器是否正常运行,确认端口映射是否生效。

bash 复制代码
# 查看正在运行的容器,筛选Jenkins相关信息
docker ps

运行正常的示例(可看到容器状态为Up,端口映射正常):

5 Jenkins初始化配置

服务启动成功后,需通过浏览器完成Jenkins的初始化配置,包括解锁服务、安装插件、创建管理员账号等,步骤如下。

5.1 初始化配置

5.1.1 访问Jenkins

打开本地浏览器,输入访问地址:http://服务器IP:8380(将服务器IP替换为自身服务器的公网或内网IP),进入Jenkins解锁页面

5.1.2 输入初始密码

页面会提示输入管理员初始密码,可通过以下两种方式获取:

  1. 查看启动日志(最直接):
bash 复制代码
docker logs jenkins

日志中会包含初始密码,如下所示(示例):

  1. 通过挂载目录查看密码文件:
bash 复制代码
cat /home/jenkins/jenkins_home/secrets/initialAdminPassword

5.1.3 安装插件

解锁成功后,进入插件安装选择页面,提供两种安装方式,根据自身经验选择即可:

  • 安装推荐插件:Jenkins社区筛选的常用插件,一键安装,适合新手,无需手动选择,能满足大部分基础使用需求。

  • 选择插件来安装:适合有经验的用户,可根据自身项目需求,自定义选择需要的插件,避免安装无用插件。

新手推荐选择「安装推荐插件」,点击后耐心等待安装完成即可。

温馨提示:插件安装失败多为网络波动或版本兼容问题,可尝试配置代理、重复安装,若仍失败可暂时跳过,后续进入后台后再按需补充安装。

5.1.4 创建管理员账号

插件安装完成后,进入管理员账号创建页面,需填写以下信息(建议牢记,后续登录Jenkins的核心凭证):

5.1.5 配置实例URL

进入实例配置页面,默认显示的Jenkins URL(http://服务器IP:8380/)无需修改,确认IP地址对应即可,点击「保存并完成」。

5.1.6 完成初始化

点击「开始使用Jenkins」,进入Jenkins主页面,此时Jenkins初始化完成,可正常使用。

5.2 可选配置:优化Jenkins功能(按需操作)

以下配置为可选功能,根据自身项目需求选择是否配置,主要用于优化Jenkins使用体验、扩展功能范围。

5.2.1 全局工具配置(添加Maven)(可选)

打开配置页面后,拉到最下面,然后新增一个maven


5.2.2 全局工具配置(添加jdk版本)(可选)

首先需要创建一个目录来放jdk

bash 复制代码
cd /home/jenkins/jenkins_home
mkdir jdks
cd jdks

然后到Oracle官网或镜像网站去下载一个你要的JDK版本的安装包,下载x64架构的Linux tar.gz包

bash 复制代码
wget https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

使用tar命令解压安装包,命令行如:

bash 复制代码
 tar -zxvf jdk-8u202-linux-x64.tar.gz

解压完成后如下图所示

然后在全局工具配置中,新增JDK配置


这里需要注意

去查看你的 docker-compose.yml文档

bash 复制代码
cat docker-compose.yml

拿我的文档来说

我的文档docker-compose.yml 里,做了数据卷挂载,把宿主机的 /home/jenkins_home 映射到了容器内的 /var/jenkins_home(Jenkins 容器默认工作目录)。

所以:

  • 宿主机路径:/home/jenkins_home/jdks/jdk1.8.0_421
  • 容器内路径:/var/jenkins_home/jdks/jdk1.8.0_421

所以要这样填

填写完成后点击,保存按钮

5.3 配置SSH插件(可选)

若需要在Jenkins构建过程中,通过SSH远程登录其他服务器执行脚本(如部署项目、启动服务等),需安装并配置SSH插件,步骤如下。

5.3.1 安装SSH插件

  1. 进入插件管理页面:Jenkins主页面 → 系统管理 → 插件管理。

  2. 切换到「可用插件」选项卡,搜索关键词「Publish Over SSH」。

  3. 勾选该插件,点击「安装」,等待下载完成。

  4. 下载完成后,勾选「重启Jenkins(空闲时)」,重启Jenkins使插件生效。

提示:Docker安装的Jenkins,重启后若服务未自动启动,执行命令

bash 复制代码
 docker -compose start

手动启动。

重启成功后可能会自动进入登录界面

输入登录信息点击登录后,会进入到刚才的下载界面

6 扩展配置:对接代码仓库(可选)

Jenkins常用于自动化构建,需对接Gitee、GitHub、GitLab等代码仓库,以下为常用的凭据添加。

6.1 添加凭据

提前添加代码仓库的账号凭据,后续构建项目时可直接选择凭据,无需重复输入账号密码,提升效率。

6.1.1 进入凭据管理

在Jenkins中找到凭证管理

添加一个全局凭证

点击「Add Credentials」,选择凭据类型(例如「Username with password」,适用于账号密码登录的代码仓库)。

比如我这里是用的云效,那么就是要去云效找到https密码和账号

填写代码仓库的登录用户名、密码,自定义凭据名称(便于后续选择,例如Gitee-账号)。

点击「Create」,凭据创建完成,可在凭据列表中查看、编辑或删除。

相关推荐
xmlhcxr2 小时前
kubernetes(K8s)基础配置及资源使用详解
docker·云原生·eureka·k8s
G佳伟2 小时前
阿里云,腾讯云 Docker Hub国内云服务器无法访问解决方案
阿里云·docker·腾讯云
come112342 小时前
本地 Docker 容器的“网络端点状态异常”,如何快速修复
网络·docker·容器
[shenhonglei]3 小时前
PolarDB-X Docker 部署与登录实战:从拉取镜像到客户端连接
运维·docker·容器
ai_xiaogui3 小时前
PanelAI 最新进展:AI算力集群一键部署ComfyUI & Stable Diffusion,多节点Docker管理面板从原型到真实数据全解析
人工智能·docker·stable diffusion·ai算力集群管理·ai私有化部署工具·ai容器管理与算力调度实战·多节点docker服务器面板
wuyikeer11 小时前
docker下搭建redis集群
redis·docker·容器
chinesegf13 小时前
ubuntu建虚拟环境制作docker容器
linux·ubuntu·docker
Keanu-14 小时前
Docker---容器编排工具Docker Compose
docker·容器
lpfasd12314 小时前
MariaDB Docker容器权限配置问题分析与解决方案
数据库·docker·mariadb