温馨提示×

Jenkins在CentOS上如何进行容器化部署

小樊
31
2025-12-05 21:14:18
栏目: 智能运维

在 CentOS 上使用 Docker 容器化部署 Jenkins

一 环境准备

  • 安装 Docker(推荐使用国内镜像源以加速)
    • 安装依赖与仓库:
      • sudo yum update -y
      • sudo yum install -y yum-utils
      • sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 安装并启动 Docker:
      • sudo yum install -y docker-ce docker-ce-cli containerd.io
      • sudo systemctl start docker && sudo systemctl enable docker
    • 可选:配置 Docker 镜像加速器(提升拉取速度),编辑 /etc/docker/daemon.json 添加:
      • { “registry-mirrors”: [“https://hub-mirror.c.163.com”,“https://registry.aliyuncs.com”,“https://docker.mirrors.ustc.edu.cn”] }
      • 然后 sudo systemctl restart docker
  • 创建持久化目录(避免容器重启后数据丢失)
    • mkdir -p /data/jenkins_home
    • chown -R 1000:1000 /data/jenkins_home(Jenkins 容器内以 **jenkins:jenkins(UID 1000)**运行,目录属主需匹配,否则会出现权限问题导致容器退出)

二 启动 Jenkins 容器

  • 使用 Docker 卷(推荐,便于备份与迁移)
    • docker network create jenkins
    • docker pull jenkins/jenkins:lts-jdk17
    • docker run -d --name jenkins --network jenkins
      -v jenkins_home:/var/jenkins_home
      -p 8080:8080 -p 50000:50000
      –restart=on-failure
      jenkins/jenkins:lts-jdk17
  • 使用宿主机目录挂载(便于直接在宿主机查看与备份)
    • docker run -d --name jenkins
      -v /data/jenkins_home:/var/jenkins_home
      -p 8080:8080 -p 50000:50000
      –restart=on-failure
      jenkins/jenkins:lts-jdk17
  • 端口说明
    • 8080:Jenkins Web 界面
    • 50000:JNLP 代理(Agent)通信端口,用于添加构建节点

三 初始化与安全配置

  • 获取解锁密码
    • 方式一:查看容器日志
      • docker logs jenkins | grep -A 2 “initialAdminPassword”
    • 方式二:进入容器查看
      • docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  • 访问与初始化
    • 浏览器访问:http://<服务器IP或域名>:8080
    • 选择“安装推荐插件”,随后创建管理员账户
  • 提升插件下载速度(可选)
    • 修改文件:/data/jenkins_home/hudson.model.UpdateCenter.xml
    • 将 URL 改为国内镜像源,例如:
      • https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
    • 重启容器或等待 Jenkins 自动刷新元数据

四 可选优化

  • 反向代理与域名访问(Nginx 示例)
    • 安装 Nginx:sudo yum install -y nginx
    • 新建配置 /etc/nginx/conf.d/jenkins.conf:
      • server { listen 80; server_name jenkins.your-domain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
    • 启动或重启 Nginx:sudo systemctl restart nginx
    • 访问:http://jenkins.your-domain.com(注意云服务器需开放 80/443 端口)
  • 云服务器安全组与防火墙
    • 开放 8080(以及使用代理时的 80/443)入站规则;如使用 50000 添加构建代理,也需放通对应端口

五 常见问题排查

  • 容器启动后立即退出(Exited)
    • 检查宿主机目录权限:确保 /data/jenkins_home 属主为 1000:1000
    • 查看日志定位:docker logs jenkins
  • 忘记解锁密码
    • 通过 docker logs 或 docker exec 读取 /var/jenkins_home/secrets/initialAdminPassword
  • 拉取镜像缓慢或失败
    • 配置 Docker 镜像加速器(/etc/docker/daemon.json),然后重启 Docker
  • 云上无法访问
    • 确认云厂商安全组与系统防火墙已放行对应端口(如 8080/80/443/50000

0