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

Docker API如何像CLI一样使用路径作为镜像构建上下文?

当然可以!其实Docker API本身就支持直接用本地路径作为构建上下文,完全不用手动打包tar包再传URI,只是调用方式和CLI稍微有点不一样,我给你两种实用的实现方法:

使用Docker API直接指定本地构建上下文的方法

方法一:通过multipart/form-data上传本地上下文

这是最贴近docker build PATH体验的方式,你可以直接把本地目录下的文件作为表单数据发送给API,不需要提前打包:

  • 请求方法:POST
  • 请求端点:/build
  • 核心操作:
    • 将本地上下文目录的内容作为multipart/form-data的一部分发送
    • 可以通过查询参数?t=myimage:tag指定镜像标签
  • 用curl模拟的示例命令:
curl -X POST "http://localhost:2375/build?t=myimage:tag" \
  -H "Content-Type: multipart/form-data" \
  -F file=@./path/to/your/context

这里的@./path/to/your/context会让curl自动把指定目录打包并作为表单数据发送,Docker守护进程会自动解析这个上下文,和你用CLI执行docker build的行为完全一致。

方法二:使用本地文件系统URI(仅限同主机守护进程)

如果你的Docker守护进程和文件在同一主机,且守护进程有权限访问本地文件系统(默认本地模式是允许的),可以直接用file://协议的URI指定上下文路径:

  • 请求方法:POST
  • 请求端点:/build
  • 请求体是JSON格式,包含remote字段,值为本地绝对路径的file:// URI
  • 用curl模拟的示例命令:
curl -X POST "http://localhost:2375/build?t=myimage:tag" \
  -H "Content-Type: application/json" \
  -d '{"remote": "file:///absolute/path/to/your/context"}'

注意这里必须用绝对路径,URI格式是file://加上完整的绝对路径(比如file:///home/user/my-project),相对路径无法被守护进程正确识别。

一些注意点

  • 如果Docker守护进程是远程的,方法二就不适用了,只能用方法一上传上下文
  • 确保守护进程的配置允许本地文件访问(默认本地模式没问题,远程模式可能需要调整权限)
  • 和CLI一样,上下文路径下的.dockerignore文件会被守护进程自动识别,用来排除不需要的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:12:00