温馨提示×

Debian系统中Jenkins如何进行容器化部署

小樊
34
2025-12-09 00:25:56
栏目: 智能运维

在 Debian 上容器化部署 Jenkins 的完整指南

一 准备环境

  • 安装 Docker(Debian 常用方式)
    • 更新索引并安装:sudo apt-get update && sudo apt-get install -y docker.io
    • 启动并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
    • 验证:sudo docker run --rm hello-world
  • 创建专用网络(便于与后续 Agent/构建容器互通)
    • docker network create jenkins
  • 说明
    • 本方案使用官方镜像 jenkins/jenkins:lts,通过数据卷持久化 /var/jenkins_home,并映射 8080(Web)与 50000(Agent)端口。

二 快速启动与初始化

  • 启动容器(使用数据卷持久化)
    • docker run -d
      –name jenkins
      –network jenkins
      -p 8080:8080
      -p 50000:50000
      -v jenkins_data:/var/jenkins_home
      jenkins/jenkins:lts
  • 获取初始管理员密码
    • docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  • 访问与初始化
    • 浏览器访问:http://<服务器IP>:8080
    • 完成解锁后,选择安装推荐插件或按需选择(如 Pipeline、GitHub Integration、Docker 等),创建管理员用户。

三 进阶 在容器内使用 Docker(DinD 或挂载 Docker 套接字)

  • 方案 A 挂载宿主机 Docker 套接字(简单,便于容器直接操控宿主机 Docker)
    • 启动命令追加:-v /var/run/docker.sock:/var/run/docker.sock
    • 注意:该方式赋予容器内较高权限,务必配合最小权限与安全措施。
  • 方案 B Docker-in-Docker(DinD,隔离性更好)
    • 启动 DinD 服务容器(作为 Docker 守护进程)
      • docker run --name jenkins-docker --rm --detach
        –privileged --network jenkins --network-alias docker
        –env DOCKER_TLS_CERTDIR=/certs
        –volume jenkins-docker-certs:/certs/client
        –publish 2376:2376
        docker:dind --storage-driver overlay2
    • 启动 Jenkins 并连接到 DinD
      • docker run --name jenkins-blueocean --restart=on-failure --detach
        –network jenkins
        –env DOCKER_HOST=tcp://docker:2376
        –env DOCKER_CERT_PATH=/certs/client
        –env DOCKER_TLS_VERIFY=1
        -p 8080:8080 -p 50000:50000
        -v jenkins_data:/var/jenkins_home
        -v jenkins-docker-certs:/certs/client:ro
        jenkins/jenkins:lts
  • 说明
    • 两种方案各有取舍:挂载套接字更简单,DinD 更隔离;生产环境建议结合权限控制、镜像白名单与网络策略。

四 安全与运维要点

  • 防火墙放行:确保 808050000 端口对外开放(如使用 ufw/iptables)。
  • 持久化与备份:所有 Jenkins 配置与作业数据均在 /var/jenkins_home,务必定期备份该数据卷(快照/离线拷贝)。
  • 时间与 NTP:保持节点时间同步,避免因时间漂移导致构建与插件问题。
  • 权限最小化:避免在容器内以 root 运行构建;为 Jenkins 代理配置最小权限的凭据与工具链。
  • 升级与回滚:采用蓝绿或滚动方式升级 Jenkins 容器与插件;回滚时优先恢复 jenkins_data 卷到上一版本。

0