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

Jenkins Docker Agent无法执行命令问题排查求助

解决Jenkins Docker代理Pipeline无限等待的问题

问题根源分析

你的配置存在两处关键冲突,导致Pipeline任务阻塞:

  1. 用户身份不匹配:Dockerfile最后切换回jenkins用户运行,但Docker Compose强制设置user: root,让Jenkins服务以root身份启动。这种身份冲突会导致Jenkins与Docker代理容器的通信出现stdin/stdout阻塞,进而引发任务无限等待。
  2. 目录权限异常:挂载的jenkins_home目录权限未匹配Jenkins官方镜像的jenkins用户UID/GID(默认1000:1000),同时Docker套接字的权限上下文也存在不兼容问题。

修复步骤

1. 调整Docker Compose配置

移除user: root配置,让Jenkins以Dockerfile定义的jenkins用户运行:

version: '3.8'
services:
  jenkins:
    image: tmateusz/jenkins:lts
    privileged: true
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    volumes:
      - /MY_PATH/jenkins_configuration:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - jenkins
networks:
  jenkins:
    name: jenkins_network

2. 修复宿主机目录与套接字权限

在宿主机执行以下命令,确保权限匹配:

# 修正jenkins_home目录权限,匹配Jenkins用户UID/GID
sudo chown -R 1000:1000 /MY_PATH/jenkins_configuration

# 确保Docker套接字权限允许jenkins用户所在的docker组访问
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock

3. 重启Jenkins服务

docker-compose down && docker-compose up -d

验证修复

重新运行你的测试Pipeline:

pipeline {
    agent {
        docker {
            image 'eclipse-temurin:11'
        }
    }

    stages {
        stage('Check versions') {
            steps {
                sh 'java --version'
            }
        }
    }
}

此时任务应该能正常执行,输出Java版本信息后完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:15:33