温馨提示×

Jenkins在Debian上的容器化部署如何操作

小樊
77
2025-12-14 23:03:34
栏目: 智能运维

在 Debian 上用 Docker 部署 Jenkins 的完整步骤

一 准备环境

  • 更新系统并安装 Docker(Debian 常用软件源中的 docker.io 包即可):
    • 执行:sudo apt update && sudo apt install -y docker.io
    • 启动并设置开机自启:sudo systemctl start docker && sudo systemctl enable docker
    • 可选验证:sudo docker run --rm hello-world
  • 建议以非 root 用户管理 Docker(可选):将当前用户加入 docker 组并重新登录:
    • 执行:sudo usermod -aG docker $USER 后退出重登终端。

二 启动 Jenkins 容器

  • 使用官方 LTS 镜像并持久化数据(推荐命名卷方式):

    • 执行:docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
    • 说明:
      • -p 8080:8080 为 Web 访问端口;-p 50000:50000Jenkins Agent 通信端口。
      • -v jenkins_home:/var/jenkins_home 使用 Docker 命名卷持久化配置与作业数据。
  • 如需在容器内构建/操作宿主机 Docker(Docker-in-Docker 思路之一),挂载 Docker 套接字:

    • 执行:docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
    • 安全提示:挂载 /var/run/docker.sock 会赋予容器内较高权限,生产环境请结合权限最小化与镜像安全策略谨慎使用。
  • 如需使用主机目录挂载(便于直接备份与查看),先创建目录并授权,再启动:

    • 执行:sudo mkdir -p /var/jenkins_node && sudo chmod 777 /var/jenkins_node
    • 启动:docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_node:/var/jenkins_home jenkins/jenkins:lts

三 初始化与安全配置

  • 访问 http://<服务器IP>:8080 进入解锁页面,获取初始管理员密码:

    • 方式一(命名卷):docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    • 方式二(宿主机目录):sudo cat /var/jenkins_node/secrets/initialAdminPassword
    • 方式三(容器日志):docker logs jenkins | grep -A 2 "initialAdminPassword"
  • 完成解锁后,选择安装推荐插件或自定义插件,并设置管理员账户。为提升安全性,建议:

    • 仅开放必要端口(如 8080/50000),并在防火墙/云安全组限制来源 IP。
    • 避免以 root 运行容器,必要时在运行时指定非 root 用户(需确保挂载目录权限匹配)。
    • 谨慎挂载 /var/run/docker.sock,必要时采用代理/远程构建等替代方案。

四 常用管理与扩展

  • 备份与迁移:直接备份宿主机上的 /var/jenkins_node(目录挂载)或备份命名卷 jenkins_home(如 docker volume create jenkins_home_bak 后用临时容器拷贝数据),在新环境以相同方式挂载恢复。

  • 在容器内使用宿主机的 Docker(可选):

    • 挂载 /var/run/docker.sock 后,容器内可直接执行 docker 命令构建/推送镜像;若希望“容器内用户”有权限操作,可在宿主机将该用户加入 docker 组,或在启动容器时以合适用户运行并设置卷权限。
  • 构建代理与流水线:

    • 如需动态构建环境,可在 Jenkins 中配置 Docker Agent(在容器中运行构建任务),或使用 Kubernetes 插件扩展多节点弹性构建能力(适合大规模场景)。

0