You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Agent启动后立即退出,求排查Docker Compose配置问题

Jenkins Agent容器启动后直接退出的问题修复

你的Agent容器退出码为0,说明容器内的启动进程正常执行完毕后就终止了——核心原因是缺少Agent连接Jenkins主节点的认证信息,导致Agent无法完成注册并维持长期运行的阻塞状态。

问题根源

jenkins/agent镜像的默认启动逻辑需要明确的认证凭据(密钥或用户名密码)来完成与Jenkins主节点的绑定,仅配置JENKINS_URL和JENKINS_AGENT_NAME不足以让Agent进程驻留运行。

修复方案

方案1:使用密钥文件挂载(生产环境推荐)

  1. 在Jenkins主节点的「管理节点」页面,创建节点时生成对应Agent的密钥(secret),将密钥保存到本地文件(比如./jenkins-agent-secret)。
  2. 修改Docker Compose配置,挂载密钥文件并指定路径:
node-1:
    image: jenkins/agent
    depends_on:
      jenkins:
        condition: service_healthy
    privileged: true
    container_name: jenkins-node-1
    environment:
      - JENKINS_URL=http://jenkins:8080
      - JENKINS_AGENT_NAME=node-1
      - JENKINS_SECRET_FILE=/run/secrets/jenkins-agent-secret
    volumes:
      # 本地密钥文件路径 → 容器内路径
      - ./jenkins-agent-secret:/run/secrets/jenkins-agent-secret
    networks:
      - jenkins-net

方案2:直接传入密钥环境变量(测试场景可用)

如果是测试环境,可直接将密钥作为环境变量传入(注意:密钥会明文暴露在配置中,生产环境不建议):

node-1:
    image: jenkins/agent
    depends_on:
      jenkins:
        condition: service_healthy
    privileged: true
    container_name: jenkins-node-1
    environment:
      - JENKINS_URL=http://jenkins:8080
      - JENKINS_AGENT_NAME=node-1
      # 替换为你实际的Agent密钥
      - JENKINS_SECRET=your-agent-secret-string
    networks:
      - jenkins-net

备选:手动指定启动命令

如果上述配置仍有问题,可直接指定Agent启动命令,强制进程阻塞运行:

node-1:
    # 保留其他原有配置
    command: ["java", "-jar", "/usr/share/jenkins/agent.jar", "-url", "http://jenkins:8080", "-name", "node-1", "-secret", "$JENKINS_SECRET"]

内容的提问来源于stack exchange,提问作者Standard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:52:40