Linux Jenkins如何实现容器化部署
导读:Linux 上用 Docker 容器化部署 Jenkins 的完整方案 一 环境准备与版本选择 安装并启动 Docker(Ubuntu/Debian 或 CentOS/RHEL 均可),确认命令可用:docker --version。如使...
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:8080Web 访问端口;-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 Plugin 与 Docker Pipeline,即可在 Job/Pipeline 中使用 docker 步骤或 agent {
docker {
image 'xxx' }
}
。
- 方式二 使用 Docker-in-Docker(DinD):在容器内运行独立 Docker 守护进程,隔离性更好,但资源开销更高,适合特定场景。
- 验证调用:在 Jenkins 的“脚本命令行”执行
docker ps,应能看到宿主机容器列表。
五 常见问题与优化建议
- 访问异常:确认云服务器安全组/本机防火墙已放行 8080/50000;使用
docker ps与docker logs jenkins排查容器状态与日志。 - 插件安装慢或失败:配置国内镜像源(见第三部分);必要时设置代理环境变量(
-e http_proxy=... -e https_proxy=...)。 - 时区与路径:挂载
/etc/localtime:ro统一时区;如需自定义工具链,优先在容器内安装或使用 Docker Pipeline 拉取对应构建镜像。 - 数据备份与迁移:定期备份 /data/jenkins_home(含
jobs/、config.xml、credentials.xml等);迁移时在新主机使用相同路径或 Docker 卷启动即可。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Jenkins如何实现容器化部署
本文地址: https://pptw.com/jishu/770182.html
