Docker客户端与守护进程通过C/S架构通信,默认使用Unix套接字(/var/run/docker.sock)实现本地高效安全交互;支持通过DOCKER_HOST环境变量切换为TCP连接(如2375/2376端口),远程访问需守护进程配置hosts并启用TLS加密。
docker 客户端与守护进程之间的通信连接,本质是基于 c/s 架构的请求-响应交互,不依赖直接操作,而是通过标准化的通信通道完成。核心在于客户端如何定位并发送指令,守护进程如何接收并执行。
默认方式是 Unix 套接字通信
这是最常用、最安全、也是安装后开箱即用的方式:
- 守护进程默认监听
/var/run/docker.sock这个本地 Unix domain socket 文件 - 客户端(如
docker ps)无需额外配置,自动尝试连接该路径 - 通信仅限本机,不走网络协议栈,性能高且无暴露风险
- 要求用户属于
docker用户组,否则会提示Permission denied
可通过环境变量切换连接方式
当需要调整通信路径时,设置 DOCKER_HOST 即可:
-
export DOCKER_HOST=unix:///var/run/docker.sock(显式指定默认方式) -
export DOCKER_HOST=tcp://localhost:2375(启用未加密 TCP,需守护进程配合配置) -
export DOCKER_HOST=tcp://192.168.1.100:2376(连接远程守护进程,需 TLS 加密)
注意:环境变量一旦设置,所有后续docker命令都会按此地址发起请求
守护进程必须处于运行状态才能响应
客户端发请求前,守护进程得先起来:
- Linux 系统常用
sudo systemctl start docker启动服务 - 用
sudo systemctl is-active docker或sudo systemctl status docker确认状态为active - 若看到
failed或inactive,命令会报错Cannot connect to the Docker daemon
远程连接需双向配置
单纯改客户端的 DOCKER_HOST 不够,守护进程本身也得“愿意被连”:
- 编辑
/etc/docker/daemon.json,添加"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] - 重启守护进程:
sudo systemctl restart docker - 防火墙需放行对应端口(如
2375),生产环境强烈建议使用2376 + TLS
不复杂但容易忽略


















