核心是让docker守护进程监听tcp端口(如2375),通过systemd覆盖文件配置-h tcp://0.0.0.0:2375并保留unix:///var/run/docker.sock,再开放防火墙端口、设置docker_host环境变量实现远程控制,生产环境必须启用tls加密。
要让 docker 守护进程支持远程 tcp 访问,核心是让它监听一个可被网络访问的 tcp 地址(比如 tcp://0.0.0.0:2375),同时保留本地 unix 套接字能力,并确保网络连通与基础安全控制到位。
修改守护进程监听地址
Docker 默认只监听 unix:///var/run/docker.sock,不接受任何网络连接。需显式添加 TCP 监听配置:
- 推荐方式:使用 systemd 覆盖文件(避免直接改原始 service 文件,升级不丢失)
创建/etc/systemd/system/docker.service.d/override.conf,内容如下:
[Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
-
-H fd://保留 systemd 对进程的管理能力; -
-H tcp://0.0.0.0:2375开放本机所有网卡的 2375 端口;若只要内网访问,可改为tcp://192.168.x.x:2375; -
-H unix:///var/run/docker.sock维持本地命令(如docker ps)正常工作。
保存后执行:
sudo systemctl daemon-reload<br>sudo systemctl restart docker
验证是否生效:
sudo ss -tlnp | grep :2375
应看到 dockerd 进程绑定在该端口。
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
开放防火墙端口
即使守护进程在监听,若防火墙拦截,外部仍无法连接。根据系统选择对应操作:
- firewalld(CentOS/RHEL/Fedora):
sudo firewall-cmd --permanent --add-port=2375/tcpsudo firewall-cmd --reload - iptables(传统 Debian/Ubuntu):
sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT
并保存规则(如iptables-save > /etc/iptables/rules.v4) - UFW(Ubuntu 简化防火墙):
sudo ufw allow 2375
客户端连接方式
远程机器无需安装 Docker 守护进程,只需 Docker CLI 工具,并指向服务端地址:
- 临时指定(单次命令):
docker -H tcp://192.168.220.128:2375 info - 设为环境变量(当前终端生效):
export DOCKER_HOST=tcp://192.168.220.128:2375
后续所有docker命令自动走远程 - 永久设置(当前用户):
将上行 export 加入~/.bashrc或~/.zshrc,再source生效
安全提醒(不可跳过)
2375 是未加密端口,等同于把 root 权限暴露在网络中:
- 切勿在公网或不可信网络中开放
0.0.0.0:2375; - 生产环境必须启用 TLS 加密(使用 2376 端口 + CA 证书 + 双向验证);
- 最小权限原则:限制访问 IP(如用
tcp://192.168.1.100:2375替代0.0.0.0),配合防火墙白名单更稳妥。










