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

Jenkins docker-pipeline插件docker.image.inside执行后无法结束求助

Jenkins Docker流水线执行后停滞问题排查

问题描述

我尝试使用docker-pipeline插件运行以下Groovy流水线:

pipeline {
    agent any
    stages {
        stage("Some Impressive Stage Name") {
            steps {
                script {
                    docker.image("alpine").inside() {
                        sh "echo 'hello world!'"
                    }
                }
            }
        }
    }
}

这条简单的流水线始终无法结束。我确认镜像在2秒内已完成拉取并启动,但流水线在执行hello world步骤时陷入停滞。当前使用的Jenkins版本为2.401.1,docker-pipeline插件版本为563.vd5d2e5c4007f,请问问题出在哪里?

排查与解决方法

  • 修正容器PID 1进程退出逻辑
    Alpine镜像默认PID 1是sh,而Jenkins的docker-workflow插件依赖容器主进程退出才会结束步骤。sh执行完echo后可能因终端交互特性未正常退出,导致容器挂起。可以通过exec让命令成为PID 1进程,确保执行后直接退出:

    docker.image("alpine").inside() {
        sh "exec echo 'hello world!'"
    }
    
  • 添加init进程管理容器生命周期
    使用--init参数引入tini进程管理容器的PID 1,确保子进程退出后容器能正常终止:

    docker.image("alpine").inside("--init") {
        sh "echo 'hello world!'"
    }
    
  • 验证Jenkins代理的Docker权限与网络
    确认Jenkins代理用户(如jenkins)拥有Docker管理权限,同时检查Docker daemon的网络配置,避免容器与代理间的通信阻塞。

  • 排查版本兼容性
    虽然当前插件与Jenkins版本理论兼容,但可尝试升级docker-pipeline插件到最新稳定版,或回退到稍旧版本,排除版本间的潜在bug。

  • 查看日志定位线索
    检查Jenkins系统日志(Manage Jenkins → System Log),以及停滞容器的日志(执行docker logs <容器ID>),寻找报错、资源耗尽或权限问题的具体信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:34:55