docker守护进程默认仅监听本地unix:///var/run/docker.sock,要支持远程访问需通过-h参数或daemon.json配置tcp套接字(如tcp://0.0.0.0:2375),二者不可混用;修改后须重启服务并注意启用tls加密与防火墙限制以保障安全。

Docker 守护进程(dockerd)默认只监听本地 unix:///var/run/docker.sock,要让它支持远程访问或自定义通信方式,核心就是修改它的监听套接字配置。关键在于指定 -H(host)参数或通过 daemon.json 统一管理,但二者不能混用,否则服务无法启动。
使用 -H 参数直接启动(适合调试或临时配置)
命令行方式最直观,适用于快速验证或容器化调试环境:
-
仅启用本地 Unix 套接字(最安全,默认):
dockerd -H unix:///var/run/docker.sock -
同时启用本地套接字 + 所有 IPv4 接口的 TCP 监听(开放远程,但不加密):
dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 -
绑定到特定 IP 和端口(更可控,如仅允许内网访问):
dockerd -H unix:///var/run/docker.sock -H tcp://192.168.1.100:2375 -
使用 systemd socket 激活(推荐生产环境):
dockerd -H fd://—— 此时由 systemd 管理套接字生命周期,无需手动指定路径
通过 daemon.json 配置文件(推荐长期使用)
编辑 /etc/docker/daemon.json(Linux),用 JSON 格式声明 hosts 字段,比改 systemd 文件更稳定、易维护:
- 基础配置示例(等效于
-H unix://... -H tcp://...):{"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]} - 启用 TLS 加密通信(必须配证书,端口建议用 2376):
{"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"], "tls": true, "tlscert": "/path/to/server.pem", "tlskey": "/path/to/server-key.pem"} - 禁用 insecure registry 时,若需加白名单,可在同一文件中补充
"insecure-registries"字段
修改后需执行 sudo systemctl reload docker 或 sudo systemctl restart docker 生效。
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
通过 systemd service 文件修改(适用于非 JSON 管理的旧系统)
对于使用 systemd 的发行版(Ubuntu/CentOS/RHEL),可覆盖默认启动项:
- 运行
sudo systemctl edit docker.service创建覆盖文件 - 写入以下内容(注意清空原有
ExecStart,再重新定义):[Service]<br>ExecStart=<br>ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
- 保存后执行
sudo systemctl daemon-reload && sudo systemctl restart docker - ⚠️ 注意:如果已存在
daemon.json,此处再设-H会导致冲突报错
验证与安全提醒
配置生效后,可通过以下方式确认:
- 检查监听状态:
sudo ss -tlnp | grep dockerd或sudo netstat -tulpn | grep dockerd - 本地测试:
curl --unix-socket /var/run/docker.sock http://localhost/info | jq '.ServerVersion' - 远程测试(确保防火墙放行):
curl http://<host_ip>:2375/version</host_ip>
不加密的 tcp://:2375 暴露在公网等于完全开放 root 权限,务必配合防火墙(如 ufw 或 iptables)限制源 IP,并优先启用 TLS(2376 端口)或反向代理(如 Nginx + client cert 认证)。










