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

使用Docker Engine API在Node.js创建镜像遇URL不匹配错误,如何设置参数?

解决Docker Engine API创建镜像时的“无匹配URL”错误

问题分析

你的代码存在几个关键错误,导致了“无匹配URL”的问题:

  • 接口路径错误:你要创建镜像,但误用了容器创建的接口路径/containers/create,正确的镜像创建接口路径是/images/create。
  • 配置键名不匹配:配置对象里的键是cc,但请求时调用了options.cb,拼写错误导致读取不到正确的请求配置。
  • 请求数据未发送:Node.js的http.request不会自动处理配置里的data字段,需要手动将数据转为JSON字符串并写入请求流。
  • 参数字段错误:创建镜像接口的正确参数字段是fromImage(指定要拉取的镜像名称),而非你写的Image。

修正后的代码

const http = require('http');

const options = {
  'cc': {
    socketPath: '//./pipe/docker_engine', // Windows下的Docker socket路径
    method: 'POST',
    path: '/images/create', // 修正为镜像创建接口路径
    headers: {
      'Content-Type': 'application/json',
    },
    data: {
      fromImage: "sampleappp" // 修正为接口要求的参数字段
    },
  },
}

function createImage(){
  let responseData = '';
  // 使用正确的配置键名cc
  const apiReq = http.request(options.cc, (apiRes) => {
    apiRes.on('data', chunk => {
      responseData += chunk.toString();
    });
    apiRes.on('end', () => {
      console.log(`${apiRes.statusCode} - ${options.cc.path}`);
      console.log(responseData);
    });
  });
  apiReq.on('error', err => {
    console.error('请求错误:', err);
  });
  // 将请求数据转为JSON字符串并写入请求
  apiReq.write(JSON.stringify(options.cc.data));
  apiReq.end();
}

createImage();

补充说明

如果你的需求是从本地Dockerfile构建镜像,需要使用/build接口,参数需要包含Dockerfile内容或构建上下文,但上述代码适用于从镜像仓库拉取并创建镜像的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:20:42