温馨提示×

Debian上Jenkins的容器化部署

小樊
37
2025-12-28 15:58:09
栏目: 智能运维

在 Debian 上用 Docker 部署 Jenkins 的完整实践

一 环境准备与安装

  • 更新系统并安装必要依赖:
    • sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
  • 添加 Docker 官方 GPG 密钥与软件源(使用签名-by 方式):
    • curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    • echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /devref
  • 安装并启动 Docker:
    • sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
    • sudo systemctl start docker && sudo systemctl enable docker
    • sudo docker run --rm hello-world(验证安装)
  • 说明:官方 jenkins/jenkins:lts 镜像已内置 OpenJDK,宿主机无需单独安装 Java。

二 快速启动与初始化

  • 拉取镜像:
    • docker pull jenkins/jenkins:lts
  • 启动容器(数据卷持久化,映射 Web 与 Agent 端口):
    • docker run -d
      –name jenkins
      -p 8080:8080
      -p 50000:50000
      -v jenkins_home:/var/jenkins_home
      jenkins/jenkins:lts
  • 获取初始管理员密码并解锁:
    • docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
    • 浏览器访问:http://<服务器IP>:8080,粘贴密码继续
  • 完成设置:
    • 选择“Install suggested plugins”(安装推荐插件)
    • 创建管理员用户,进入 Jenkins 主界面
  • 目录挂载权限提示:
    • 若改用宿主机目录(如 /data/jenkins_home),需确保目录可被容器内 UID 1000 写入:
      • sudo mkdir -p /data/jenkins_home
      • sudo chown -R 1000:1000 /data/jenkins_home

三 数据持久化与权限优化

  • 使用命名卷(推荐,便于备份与迁移):
    • -v jenkins_home:/var/jenkins_home
  • 使用宿主机目录(可控权限,便于直接查看与备份):
    • -v /data/jenkins_home:/var/jenkins_home 并确保 1000:1000 权限
  • 插件更新源加速(可选,提升国内下载速度):
    • 进入容器编辑文件:docker exec -it jenkins vim /var/jenkins_home/hudson.model.UpdateCenter.xml
    • 改为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    • 重启容器:docker restart jenkins

四 Docker Compose 编排与 Docker-in-Docker

  • 编排文件(支持在容器内调用宿主机 Docker,便于构建镜像与推送):
    • version: ‘3.8’ services: jenkins: image: jenkins/jenkins:lts container_name: jenkins ports: - “8080:8080” - “50000:50000” volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock volumes: jenkins_home:
  • 启动与查看日志:
    • docker-compose up -d
    • docker-compose logs -f jenkins
  • 安全提示:挂载 /var/run/docker.sock 会赋予容器内较高权限,建议仅在内网可信环境使用,并配合最小权限与审计。

五 常见问题与防火墙

  • 端口冲突:
    • 8080 被占用,可改为 -p 9090:8080,访问 http://:9090
  • 权限错误:
    • 目录挂载报 Permission denied 时,执行:sudo chown -R 1000:1000 <你的JENKINS_HOME目录>
  • 防火墙放行(如使用 UFW):
    • sudo ufw allow 8080/tcp
    • sudo ufw allow 50000/tcp
    • sudo ufw reload
  • 安全建议:
    • 避免以 root 运行容器;为 Jenkins 配置强密码与基于角色的访问控制(RBAC)
    • 限制对 /var/run/docker.sock 的访问,仅在需要时挂载
    • 定期备份 jenkins_home 卷(配置、任务与凭据等关键数据)

0