Jenkins在Ubuntu上的容器化实践
导读:在 Ubuntu 上使用 Docker 部署与运维 Jenkins 的完整实践 一 环境准备与安装 更新系统并安装 Docker(Ubuntu 20.04/22.04/24.04 通用): 安装 Docker:sudo apt upda...
在 Ubuntu 上使用 Docker 部署与运维 Jenkins 的完整实践
一 环境准备与安装
- 更新系统并安装 Docker(Ubuntu 20.04/22.04/24.04 通用):
- 安装 Docker:sudo apt update & & sudo apt install -y docker.io
- 启动并设置开机自启:sudo systemctl enable --now docker
- 可选:将当前用户加入 docker 组以避免每次使用 sudo(需重新登录生效):sudo usermod -aG docker $USER
- 拉取 Jenkins 镜像:docker pull jenkins/jenkins:lts
- 说明:Jenkins 官方镜像基于 Debian,在 Ubuntu 上运行稳定;LTS 版本适合生产环境。
二 快速启动与持久化
- 使用 Docker 运行 Jenkins(推荐命名卷持久化):
- docker run -d
–name jenkins
-p 8080:8080 -p 50000:50000
-v jenkins_data:/var/jenkins_home
-e JAVA_OPTS=“-Duser.timezone=Asia/Shanghai -Xmx2g -Xms512m”
–restart unless-stopped
jenkins/jenkins:lts - 端口说明:8080 为 Web UI,50000 为代理(Agent)通信端口。
- docker run -d
- 使用宿主机目录挂载(便于直接备份与审计):
- 准备目录并修正权限(容器内 Jenkins 默认以 uid=1000 运行):
- sudo mkdir -p /srv/jenkins_home
- sudo chown -R 1000:1000 /srv/jenkins_home
- 启动命令(示例映射 7071→8080,便于与 Nginx 共存):
- docker run -d
–name jenkins
-p 7071:8080 -p 50000:50000
-v /srv/jenkins_home:/var/jenkins_home
-e TZ=Asia/Shanghai
–restart unless-stopped
jenkins/jenkins:lts
- docker run -d
- 准备目录并修正权限(容器内 Jenkins 默认以 uid=1000 运行):
- 获取初始管理员密码:
- docker logs jenkins | grep “initialAdminPassword”
- 或:docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 访问:打开浏览器访问 http://服务器IP:8080(或映射的 7071 端口)。
三 反向代理与子路径部署
- 使用 Nginx 作为反向代理,将 Jenkins 部署在子路径 /jenkins:
- 启动参数添加前缀(容器内 Jenkins 需识别前缀):
- -e JENKINS_OPTS=“–prefix=/jenkins” -e JENKINS_ARGS=“–prefix=/jenkins”
- Nginx 配置片段:
- location /jenkins { proxy_pass http://127.0.0.1:7071; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; }
- 访问地址:http://你的域名/jenkins
- 启动参数添加前缀(容器内 Jenkins 需识别前缀):
- 提示:若部署在根路径(/),无需设置前缀。
四 性能优化与常见问题
- 插件镜像加速(首次安装插件更快):
- 进入更新目录:/srv/jenkins_home/updates
- 备份并替换 default.json 中的下载地址与域名:
- sed -i ‘s|updates.jenkins-ci.org/download|mirrors.tuna.tsinghua.edu.cn/jenkins|g’ default.json
- sed -i ‘s|www.google.com|www.baidu.com|g’ default.json
- 重启 Jenkins 容器后重试插件安装。
- Docker in Docker 与权限:
- 如需在容器内构建镜像,可挂载 Docker 套接字:
- -v /var/run/docker.sock:/var/run/docker.sock
- 注意安全风险;更推荐在宿主机或专用构建执行器上运行 Docker,或使用 rootless Docker。
- 如需在容器内构建镜像,可挂载 Docker 套接字:
- 常见问题速查:
- 权限错误:宿主机目录未给 uid=1000 导致启动失败,执行 chown -R 1000:1000 /srv/jenkins_home。
- 忘记密码:使用 docker logs 或 docker exec 读取 initialAdminPassword。
- 时区问题:设置 TZ=Asia/Shanghai 或 JAVA_OPTS 的时区参数。
- 插件安装慢:使用国内镜像替换 default.json 中的下载源。
五 生产级建议
- 资源与稳定性:为 Jenkins 设置合理的内存(如 -Xmx2g -Xms512m),并使用 –restart unless-stopped 保证异常自恢复。
- 数据与备份:对 /srv/jenkins_home 或命名卷定期做快照/备份;升级时先备份再替换容器。
- 网络与端口:仅开放必要端口(如 8080/50000 或仅 80/443 对外,内部转发到 Jenkins);与 Nginx 配合时优先 80/443。
- 安全加固:限制管理端口访问来源、开启 CSRF 保护、最小权限原则配置代理与凭据;定期更新 Jenkins 与插件版本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Ubuntu上的容器化实践
本文地址: https://pptw.com/jishu/751357.html
