首页主机资讯Jenkins在Ubuntu上的容器化实践

Jenkins在Ubuntu上的容器化实践

时间2025-11-19 17:30:03发布访客分类主机资讯浏览675
导读:在 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)通信端口。
  • 使用宿主机目录挂载(便于直接备份与审计):
    • 准备目录并修正权限(容器内 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 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
  • 提示:若部署在根路径(/),无需设置前缀。

四 性能优化与常见问题

  • 插件镜像加速(首次安装插件更快):
    • 进入更新目录:/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。
  • 常见问题速查:
    • 权限错误:宿主机目录未给 uid=1000 导致启动失败,执行 chown -R 1000:1000 /srv/jenkins_home。
    • 忘记密码:使用 docker logs 或 docker exec 读取 initialAdminPassword
    • 时区问题:设置 TZ=Asia/ShanghaiJAVA_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
ubuntu 镜像如何定制 Linux防火墙怎样防范恶意攻击

游客 回复需填写必要信息