1.容器启停与生命周期

docker run -u root -d --restart always  --privileged=true -p 9086:8080 -p 50000:50000 -v /data/jenkins/jenkins_home:/var/jenkins_home -v /data:/data -v $(which docker):/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /etc/localtime:/etc/localtime -v /data/jenkins/.m2:/root/.m2/ -v /root/.ssh:/root/.ssh -e MAVEN_HOME=/data/opt/apache-maven-3.9.8 -e TZ=Asia/Shanghai --add-host=jenkins.yyh.com:192.168.1.24 --add-host=gitlab.yyh.com:192.168.1.24 --name jenkins jenkins/jenkins

命令参数详解:
    -d 或 --detach: 让容器在后台运行
    --name jenkins: 为您的容器指定一个唯一的、易于识别的名称,方便后续管理
    -p 9086:8080: 将主机的 9086 端口映射到容器的 8080 端口。这是 Jenkins Web UI 的默认访问端口 。
    -p 50000:50000: 将主机的 50000 端口映射到容器的 50000 端口。此端口用于基于 JNLP 的 Jenkins Agent(代理节点)与 Master 节点进行通信 。
    -v /data/jenkins/jenkins_home:/var/jenkins_home: 这是最为关键的参数。它创建了一个名为 /data/jenkins/jenkins_home 的 Docker 卷(Volume),并将其挂载到容器内的 /var/jenkins_home 目录。Jenkins 的所有配置、插件、作业定义和构建历史都存储在此目录中。通过这种方式,即使容器被删除,所有数据也会被保留在 Docker 卷中,实现了数据的持久化 。
    -v $(which docker):/bin/docker -v /var/run/docker.sock:/var/run/docker.sock 这个关键参数Jenkins容器可以调用主机docker命令
    -v /data/jenkins/.m2:/root/.m2/: 挂着主机maven仓库存储地址方便容器存储mavenartifacts
    --add-host=jenkins.yyh.com:192.168.1.24 --add-host=gitlab.yyh.com:192.168.1.24 容器添加hosts解析

场景

CLI 命令

关键截图/提示

启动

如上

执行后 docker ps 能看到 STATUS Up 即成功。

优雅停止

docker stop jenkins

浏览器出现 502 即停止成功。

再次启动

docker start jenkins

等待 30 s 左右,首页可访问。

重启

docker restart jenkins

日志滚动到 Jenkins is fully up and running 即可。

查看实时日志

docker logs -f jenkins

关键字 Jenkins is fully up and running 代表启动完成。

进入容器调试

docker exec -it jenkins bash

2.系统管理入口总览

登录后侧 → “Manage Jenkins”(系统管理)

图标为齿轮,子菜单包含 Configure System / Manage Users / Manage Plugins / Security / Manage Nodes 等。

3.用户管理(增删改)

操作

路径

新建用户

Manage Jenkins ▶ Manage Users ▶ “Create User”(左侧蓝色链接)→ 填 ID/密码/邮箱 → Create。

修改密码

用户列表 → 点击用户名 → “Configure” → 密码区域输入新口令 → Save。

删除用户

用户行右侧 “删除” 图标(红色 ×)→ 确认。

批量导入

需装 “Matrix Authorization Strategy” 插件 → 使用 “Bulk User Import” 或脚本。

4.权限模型与插件

维度

说明

全局权限

Overall/Read、Administer、Configure、Create、Delete、RunScripts 等。

项目权限

Item/Build、Item/Cancel、Item/Configure、Item/Read、Item/Workspace 等。

节点权限

Slave/Build、Slave/Configure、Slave/Delete、Slave/Disconnect 等。

5.启用“基于角色”的授权

  • 1.装插件

Manage Jenkins ▶ Manage Plugins ▶ “Available” → 搜索 “Role-based Authorization Strategy” → 勾选 → Install without restart。

  • 2.切换授权策略

Manage Jenkins ▶ Configure Global Security ▶ Authorization → 勾选 “Role-Based Strategy” → Save。

  • 3.创建角色

Manage Jenkins ▶ “Manage and Assign Roles”Manage Roles

  1. Global roles:例如 dev-role 只给 Overall/Read、Job/Build。
  2. Item roles:Pattern 填 dev.* 赋予对该前缀项目的所有权限。
  • 4.分配角色

同一页面切到 Assign Roles → 给用户勾选对应角色 → Save。

角色列表右侧有矩阵式复选框,与 Windows 权限表类似。

6.备份与恢复

已有定时每天凌晨2:55开始自动备份对应Jenkins目录保留3循环备份

如果需要恢复可以目录解压其他恢复对应目录内容即可

7.升级小版本(热升级)

  1. docker pull jenkins/jenkins:2.521(举例)
  2. docker stop jenkins && docker rename jenkins jenkins-old
  3. 用同一串 docker run(仅改 tag)新建容器 → 自动沿用原 jenkins_home 数据。
  4. 启动后登录 → “Manage Jenkins” 右下角版本号已更新 → 确认插件兼容即可。

8.一键排障 cheat-sheet

现象

快速定位命令 / 页面

解锁串口 404

docker logs jenkins

grep -A2 -B2 password` 再核对宿主机端口映射。

插件装失败

Manage Jenkins ▶ System Log ▶ “Install as a service” 日志看网络;国内建议换清华源。

用户登录 403

检查 “Global Security”“Authorization” 是否误把 Overall/Read 给关掉了;可 docker exec 进容器 vi $JENKINS_HOME/config.xml<useSecurity> 改成 false 重启临时关闭安全验证再改回。

Job 无法调用 Docker

宿主机执行 sudo usermod -aG docker jenkins重启整个容器;或给容器加 -v /var/run/docker.sock:/var/run/docker.sock --group-add $(stat -c %g /var/run/docker.sock)

使用小贴士

  • 任何修改 “Configure Global Security” 后,建议先开匿名 Overall/Read 权限,再细化,防止把自己锁外面。
  • 生产环境把 “CSRF Protection” 保持开启;如用脚本调用 API,给用户生成 “API Token”(用户 ▶ Configure ▶ API Token)。
  • 建议给 Jenkins 容器单独挂 SSD 盘存放 /var/jenkins_home,IO 提升明显。
  • 每周一次 “Manage Jenkins ▶ Manage Plugins ▶ Updates” 检查插件安全公告,及时升级。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐