Docker客户端通信采用C/S架构,所有命令转为HTTP请求交由守护进程执行;默认通过/var/run/docker.sock UNIX套接字本地通信,远程需启用TLS加密的TCP监听;命令映射为REST API,权限依赖套接字属组或TLS证书验证。

Docker 客户端通信架构本质是典型的 C/S 模式,客户端不直接操作容器或文件系统,而是把所有命令转成标准 HTTP 请求,交由守护进程统一调度执行。
通信底层靠 socket 或 TCP,不是直连系统调用
Docker 客户端(比如你敲的 docker ps)本身只是一个命令行程序,它不做实际的容器创建、镜像拉取等动作。所有操作都通过网络协议发给守护进程,再由后者调用底层驱动完成。这个过程对用户透明,但理解它能帮你排查连接失败、权限拒绝等问题。
- 默认走
/var/run/docker.sock这个 UNIX 套接字,只限本机访问,安全且高效 - 想从其他机器控制 Docker,就得启用 TCP 监听,比如
-H tcp://0.0.0.0:2376并配置 TLS 证书 - 客户端通过环境变量
DOCKER_HOST指定目标地址,例如export DOCKER_HOST=tcp://192.168.1.100:2376
所有命令都映射为 REST API 调用docker run 对应 POST /containers/create + POST /containers/{id}/startdocker build 对应 POST /build,上传上下文目录作为请求体docker images 对应 GET /images/json
这些路径和方法由守护进程内置的 API Server(基于 gorilla/mux 等路由库)解析并分发到对应模块(如 graphdriver 处理镜像、networkdriver 配置网络)
权限和安全性由传输层控制
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
- UNIX 套接字依赖文件属组(通常要求用户在
docker组里) - TCP 方式必须配合 TLS 认证或防火墙白名单,否则暴露 2375 端口等于开放服务器控制权
- 没有“登录鉴权”概念,认证完全靠通道本身——套接字文件权限或 TLS 证书链验证
不复杂但容易忽略

















