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

如何通过Jenkins在远程宿主机使用Dockerfile构建Docker容器

问题根因

  • groovy.lang.MissingMethodException报错:docker.withServer语法使用错误,该方法要求所有操作目标Docker服务的逻辑必须放入其闭包作用域内,单独调用一行会因参数匹配失败报错
  • docker: not found报错:Jenkins容器内缺少Docker CLI客户端,即使调用远程Docker服务,也需要本地有docker二进制文件发送请求
  • 现有Jenkinsfile存在语法缺陷:node块未闭合,构建逻辑未放入withServer闭包内

前置配置检查

  1. 确认Jenkins容器内已安装Docker CLI:进入Jenkins容器执行docker -v验证,如未安装可选两种方案:
    • Debian系Jenkins镜像可直接执行安装命令:apt update && apt install -y docker.io
    • 启动Jenkins容器时挂载宿主机Docker二进制:启动参数添加-v /usr/local/bin/docker:/usr/local/bin/docker
  2. 确认宿主机2376端口连通性:在Jenkins容器内执行telnet 192.168.178.26 2376验证网络连通正常
  3. 确认socat配置正确:socat容器需正确将2376端口流量转发到宿主机/var/run/docker.sock,启动参考参数:docker run -d -p 2376:2375 -v /var/run/docker.sock:/var/run/docker.sock alpine/socat tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock

修正后Jenkinsfile

node {
    // 拉取代码仓库
    checkout scm
    
    // 所有远程Docker操作必须放入withServer的闭包内
    docker.withServer('tcp://192.168.178.26:2376') {
        // 构建镜像
        def customImage = docker.build("my-image:${env.BUILD_ID}")
        
        // 如不需要测试运行容器可删除以下inside块,原示例的make test需替换为你实际的测试命令
        customImage.inside {
            sh 'python test.py'
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:30:04