温馨提示×

Linux Jenkins如何实现容器化部署

小樊
35
2025-12-12 06:24:47
栏目: 智能运维

Linux 上用 Docker 容器化部署 Jenkins 的完整方案

一 环境准备与版本选择

  • 安装并启动 Docker(Ubuntu/Debian 或 CentOS/RHEL 均可),确认命令可用:docker --version。如使用 CentOS,建议通过官方仓库安装 docker-ce 并启用开机自启。为便于管理,可将当前用户加入 docker 用户组(需重新登录生效)。
  • 选择 Jenkins LTS 镜像:jenkins/jenkins:lts,稳定且维护周期长。注意自 Jenkins 2.357 / LTS 2.361.1 起要求 Java 11 或 17;官方 LTS 镜像已内置符合要求的 JDK,无需在宿主机单独安装 JDK。

二 快速启动与持久化

  • 准备持久化目录(绑定挂载或 Docker 卷均可),示例:/data/jenkins_home。为简化权限问题可临时设置 chmod 777 /data/jenkins_home(生产环境请按最小权限原则设置所有者为容器内 Jenkins 用户,常见为 uid 1000)。
  • 启动容器(示例映射 8080/50000,按需调整宿主机端口):
docker run -d --name jenkins \
  -p 8080:8080 -p 50000:50000 \
  -v /data/jenkins_home:/var/jenkins_home \
  -v /etc/localtime:/etc/localtime:ro \
  jenkins/jenkins:lts

说明:

  • -p 8080:8080 Web 访问端口;-p 50000:50000 用于 Jenkins Agent 通信。
  • -v /var/jenkins_home 持久化配置与作业数据;-v /etc/localtime:ro 同步宿主机时区。
  • 访问地址:http://<服务器IP>:8080

三 初始化与安全配置

  • 获取初始管理员密码:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
# 或查看容器日志
docker logs jenkins
  • 在浏览器完成解锁后,选择安装推荐插件或按需选择。为提升插件下载速度,可修改更新站点为国内镜像(如清华源):编辑文件 /data/jenkins_home/hudson.model.UpdateCenter.xml,将 URL 改为:
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    修改后重启容器:docker restart jenkins
  • 安全建议:
    • 避免使用 --rm 在生产环境运行;为容器设置合适的 restart 策略(如 restart: unless-stopped)。
    • 谨慎使用 -u root,建议以 非 root 运行并通过目录权限控制;必要时在宿主机上预先创建目录并设定属主为 1000:1000

四 在 Jenkins 内使用 Docker 构建与运行 Agent

  • 方式一(推荐)挂载 Docker 套接字,使容器内可直接调用宿主机 Docker:
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 PluginDocker Pipeline,即可在 Job/Pipeline 中使用 docker 步骤或 agent { docker { image 'xxx' } }

  • 方式二 使用 Docker-in-Docker(DinD):在容器内运行独立 Docker 守护进程,隔离性更好,但资源开销更高,适合特定场景。
  • 验证调用:在 Jenkins 的“脚本命令行”执行 docker ps,应能看到宿主机容器列表。

五 常见问题与优化建议

  • 访问异常:确认云服务器安全组/本机防火墙已放行 8080/50000;使用 docker psdocker logs jenkins 排查容器状态与日志。
  • 插件安装慢或失败:配置国内镜像源(见第三部分);必要时设置代理环境变量(-e http_proxy=... -e https_proxy=...)。
  • 时区与路径:挂载 /etc/localtime:ro 统一时区;如需自定义工具链,优先在容器内安装或使用 Docker Pipeline 拉取对应构建镜像。
  • 数据备份与迁移:定期备份 /data/jenkins_home(含 jobs/config.xmlcredentials.xml 等);迁移时在新主机使用相同路径或 Docker 卷启动即可。

0