可直接通过http请求调用docker守护进程rest api,无需docker命令行工具;核心是docker cli仅为api封装客户端,所有操作终转为标准http请求。
你可以直接通过 http 请求调用 docker 守护进程暴露的 rest api,无需依赖 docker 命令行工具。核心在于:docker cli 本身只是 api 的封装客户端,所有操作最终都转为标准 http 请求。
确认守护进程监听地址和权限
Docker 默认通过 Unix 域套接字 /var/run/docker.sock 与本地守护进程通信,普通用户需在 docker 用户组中才能访问;若要远程调用,需配置 DOCKER_HOST 并启用 TCP 监听(如 tcp://0.0.0.0:2375 或带 TLS 的 tcp://0.0.0.0:2376)。
- 检查是否启用本地 socket:
ls -l /var/run/docker.sock - 验证守护进程状态:
systemctl is-active docker(Linux)或查看 Docker Desktop 是否运行(macOS/Windows) - 远程调用前务必配置 TLS 认证,避免未授权访问风险
构造标准 REST 请求
每个 API 调用由三部分组成:HTTP 方法(GET/POST/DELETE 等)、API 版本路径(如 /v1.44)、以及可选查询参数和 JSON 请求体。
- 获取守护进程信息:
curl --unix-socket /var/run/docker.sock http://localhost/v1.44/info - 列出所有容器:
curl --unix-socket /var/run/docker.sock "http://localhost/v1.44/containers/json?all=1" - 创建容器:
curl -X POST --unix-socket /var/run/docker.sock -H "Content-Type: application/json" -d '{"Image":"nginx:alpine"}' http://localhost/v1.44/containers/create - 启动容器:
curl -X POST --unix-socket /var/run/docker.sock http://localhost/v1.44/containers/{id}/start(将 {id} 替换为实际容器 ID)
使用编程语言调用更可靠
手动发 curl 请求适合调试,生产环境建议用官方或社区维护的 SDK,自动处理连接、版本协商、错误解析和流式响应。
- Go:用
github.com/docker/docker/client,支持 socket/TCP/TLS 自动适配 - Python:推荐
docker-py(import docker; client = docker.from_env()) - Java:使用
docker-java库,基于 OkHttp 封装,类型安全 - Node.js:可用
docker-modem或dockerode
调试与排错要点
遇到“connection refused”或“permission denied”,优先查通信路径和权限;返回 404 多因 API 路径或版本不匹配;400 通常因 JSON 格式错误或必填字段缺失。
- 开启 CLI 调试模式看底层请求:
docker --debug info - 用
tcpdump -i lo port 2375抓包验证 TCP 流量(远程场景) - 检查 API 文档对应版本:https://www.php.cn/link/35e5b98f0069039f5e0b4cdcbb9e34a5,注意 v1.42、v1.44 等版本差异
- 容器创建失败时,先确认镜像已存在本地,或在请求体中设置
"Pull": true
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











