当前位置: 首页 > news >正文

Docker引擎API接入配置

Docker引擎API接入配置


全文链接:Docker引擎API接入配置


说明 Docker EngineHTTP API的能力与接入形态、2375 / 2376端口含义、Linux(systemd)下默认仅 Unix Socket 的行为,以及如何检查与为本机开启TCP接入(如DOCKER_HOST=tcp://127.0.0.1:2375)。适用于需通过 HTTP 调用 Docker 的应用与运维场景;细节以当前 Engine 版本及 Docker Engine API 为准。


一、API 介绍:接入后能做什么

Docker 守护进程(dockerd)对外提供REST 风格的 Engine HTTP API(Docker Engine API)。通过TCPUnix 套接字上的同源协议接入后,效果等价于把 Docker 变成可被 HTTP 客户端调用的服务——能力与终端docker子命令一致(容器/镜像/网络等),调用方式由 CLI 换为 HTTP。

  • dockerCLI 与 API:CLI 在多数场景下同样调用该 API,并非另一套私有协议。
  • 典型用途:自研平台启停实训容器、CI/CD、脚本用curl健康检查或批量查询等。

请求路径需带API 版本前缀,形如/v1.xx/。可先取本机支持版本再写死路径:

# TCP 示例(需已监听 2375,见后文)curl-shttp://127.0.0.1:2375/version# Unix Socket 示例(与是否开启 2375 无关)curl-s--unix-socket /run/docker.sock http://localhost/version

响应 JSON 中ApiVersion与 URL 中v1.47等对应。

示例:用 HTTP 列出容器(对应docker ps

GET /containers/jsonall=true时接近docker ps -a。将${API_VER}换为/version返回值(如1.47)。

仅运行中:

API_VER=1.47# 按本机 /version 修改curl-s"http://127.0.0.1:2375/v${API_VER}/containers/json"

含已退出:

curl-s"http://127.0.0.1:2375/v${API_VER}/containers/json?all=true"

Unix Socket:

curl-s--unix-socket /run/docker.sock\"http://localhost/v${API_VER}/containers/json?all=true"

返回为 JSON 数组;有jq时可简化查看:

curl-s"http://127.0.0.1:2375/v${API_VER}/containers/json?all=true"|jq'.[] | {Id: .Id[0:12], Names, State, Status, Image}'

其他常见对应(参数以官方文档为准):docker imagesGET /images/jsondocker infoGET /infodocker run多为创建 + 启动等组合请求。


二、端口与协议对照

端口说明
2375Engine未加密HTTP API;勿对公网暴露
2376常见为TLSAPI(需客户端证书,与 2375 不可混用)。

默认安装(尤其docker.socket)通常监听 2375,仅Unix 套接字(如/run/docker.sock)。


三、连接地址含义示例

配置示例含义
tcp://127.0.0.1:2375本机进程经 TCP 访问本机 Docker。
tcp://192.168.x.x:2375其他机器访问该宿主机 Docker(需监听 + 防火墙/安全组)。
unix:///var/run/docker.sock本机Unix socket(与/run/docker.sock常等价)。

应用与 Docker不在同一主机时不能使用对端的127.0.0.1,应使用Docker 宿主机可达 IP(或 VPN)。


四、如何查看当前是否已配置 TCP(2375 / 2376)

安装 Docker 的服务器上执行。

是否已有进程监听

sudoss-tlnp|grep-E'2375|2376'# 或sudonetstat-tlnp2>/dev/null|grep-E'2375|2376'
  • 有 2375:已暴露未加密 HTTP API。
  • 有 2376:一般为 TLS API。
  • 无输出:多数仅 socket,未开 TCP。

dockerd 启动参数

psaux|grepdockerd|grep-vgrep

示例:

/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

-H fd://表示由systemd 套接字激活传入监听,是否 Unix/TCP 看docker.socket

systemd:docker.service

systemctlcatdocker

关注ExecStart=是否与Requires=docker.socket等配合。

systemd:docker.socket

systemctlcatdocker.socket

典型仅 Unix、无 TCP

[Socket] ListenStream=/run/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker

本机用户常需加入docker组。若无ListenStream=...:2375等项,则未通过 socket 单元开 TCP。

/etc/docker/daemon.json

sudocat/etc/docker/daemon.json

若存在"hosts": [...]且含tcp://...,需与fd:/// docker.socket一并核对,避免冲突。

docker info

dockerinfo

可与ss、docker.socket、daemon.json交叉验证。


五、配置「写在哪里」:小结

位置典型作用
docker.serviceExecStart常见dockerd -H fd://,监听交给 systemd。
docker.socket(及docker.socket.d声明 socket 激活监听;仅ListenStream=/run/docker.sock时无 2375。
daemon.jsonhosts可声明unix://tcp://;与fd://并存时改动面大,需按官方说明调整。

六、未监听 2375 时是否要显式配置?

需要。默认docker.socket + fd://下通常只有 Unix socket,在未增加 TCP 监听前DOCKER_HOST=tcp://127.0.0.1:2375不会成功。


七、推荐:用 systemd 为本机增加 2375(仅本机)

不改动daemon.json中镜像等配置,仅给docker.socket增加回环 TCP

sudomkdir-p/etc/systemd/system/docker.socket.dsudotee/etc/systemd/system/docker.socket.d/tcp-local.conf<<'EOF' [Socket] ListenStream=127.0.0.1:2375 EOFsudosystemctl daemon-reloadsudosystemctl restart docker.socketsudosystemctl restartdocker

验证:

sudoss-tlnp|grep2375curl-s--unix-socket /run/docker.sock http://localhost/_pingcurl-shttp://127.0.0.1:2375/_ping

安全127.0.0.1:2375仅本机;不要将无 TLS 的 2375 绑到公网。


八、应用在「另一台机器」上访问 Docker

  • 可让 Docker 监听内网 IP须配合防火墙仅放行可信网段),在docker.socket.d中使用形如ListenStream=192.168.x.x:2375
  • 0.0.0.0:2375风险高,一般不推荐。
  • 云上需安全组放行;长期暴露建议TLS(2376)SSH 隧道,而非明文 2375。

九、Windows / Docker Desktop

Settings中开启类似Expose daemon on tcp://localhost:2375后,本机才可用tcp://127.0.0.1:2375。与 Linuxsystemd + docker.socket方式不同,以桌面版文档为准。


十、参考

资源链接
Docker Engine APIhttps://docs.docker.com/engine/api/

daemon、systemd、security 等请以当前安装版本的官方文档为准。

http://www.cnnetsun.cn/news/1829325.html

相关文章:

  • **发散创新:基于Lua脚本的动态道具系统设计与实现**在现代游戏开发中,**道具系统**作为核心玩法之
  • HunyuanVideo-Foley新手入门:从上传视频到导出音效,完整流程解析
  • 终极免费在线流程图工具:GraphvizOnline完整使用指南与实战技巧
  • 智能传输对象员中的数据封装与网络传输
  • HFSS激励方式详解:从基础设置到高级应用
  • AltSnap:告别繁琐点击,Windows窗口管理新革命
  • 别再踩坑了!SQL Server数据类型那点事儿,看懂这篇少背三个锅拖
  • PlantUML在线编辑器终极指南:用代码思维绘制专业UML图表
  • 终极指南:如何用AI自动玩2048游戏轻松获得高分
  • 排版系统LaTex中文版下载与详细安装教程入门
  • 基于¹⁸F-FDG PET/CT的深度学习-影像组学-临床模型预测非小细胞肺癌脉管侵犯的价值
  • Harness Engineering实践,如何驾驭AI这匹野马
  • Proving Grounds Play ColdBoxEasy Walkthrough
  • OpenRocket火箭仿真软件:从零开始设计完美模型的终极指南
  • RT-1深度解析:如何通过Transformer架构实现机器人控制的规模化泛化
  • 你的macOS菜单栏太乱了?3个步骤让Ice帮你彻底整理干净
  • 如何永久保存微信聊天记录?WeChatMsg数据自主管理完整指南
  • 【Unity3D】关于TextMesh Pro中的字体资产生成汉字不全的问题即解决方案
  • QMC音频解码器:3分钟解锁QQ音乐加密文件,实现全平台音乐自由
  • MBQ实战:视觉语言模型量化部署的效率革命
  • 收藏!AI时代程序员如何不掉队,甚至起飞?
  • Fish Speech 1.5多场景:会议纪要转语音、邮件摘要播报、待办提醒合成
  • C#路径转换实战:从绝对路径到相对路径的高效实现
  • 【实战】海康摄像头RTSP流媒体连接中的特殊字符陷阱:从401错误到URL编码的终极解决
  • LLM服务版本管理实战手册(2024年头部AI团队内部流出版)
  • Vue + Iframe 实战:打造企业级流程配置中心潭
  • 2026届毕业生推荐的十大AI论文工具推荐
  • CUDA P2P技术在多GPU内存高效传输中的应用与优化
  • Steam Economy Enhancer:Steam交易效率提升87%的终极解决方案
  • 从原理到临床:深度解析MRI特殊与辅助成像技术的协同应用