开启Docker远程API访问本质是让dockerd监听TCP端口(如2375),而非仅Unix socket;但直接暴露2375端口且无认证属高危操作,生产环境必须启用TLS加密与访问控制。

开启 Docker 远程 API 访问,本质是让 dockerd 守护进程监听 TCP 网络端口(如 2375),而不仅限于本地 Unix socket。但必须注意:**直接暴露 2375 端口且无认证是高危操作,生产环境务必启用 TLS 加密与访问控制。**
修改 systemd 服务配置(主流 Linux 发行版适用)
适用于 Ubuntu 16.04+、CentOS 7+、Debian 9+ 等使用 systemd 的系统。
- 编辑服务文件:
sudo nano /lib/systemd/system/docker.service - 找到
ExecStart=行,在其末尾添加:-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock - 保存后重载并重启:
sudo systemctl daemon-reload && sudo systemctl restart docker - 验证监听状态:
sudo ss -tlnp | grep 2375或sudo netstat -tulpn | grep 2375
通过 daemon.json 配置(推荐,更清晰可维护)
避免直接修改 systemd 文件,用 Docker 官方推荐的 JSON 配置方式。
- 创建或编辑配置文件:
sudo nano /etc/docker/daemon.json - 写入以下内容(注意 JSON 格式严格,末尾不能有多余逗号):
{<br> "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]<br>} - 重启 Docker:
sudo systemctl restart docker - 该方式会自动覆盖命令行参数,且便于版本管理与容器化部署。
开放防火墙与云平台安全组
即使服务已监听,网络层拦截仍会导致连接失败。
- 本地防火墙(如 ufw):
sudo ufw allow 2375/tcp - firewalld(CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=2375/tcp && sudo firewall-cmd --reload - 云服务器(阿里云、腾讯云、AWS 等):必须在控制台的安全组规则中放行 2375 端口(源 IP 建议限制为可信管理机 IP,而非 0.0.0.0/0)
测试与基础验证
确认配置生效后,快速验证是否可达。
- 本机测试:
curl -s http://localhost:2375/version | jq .Version(需安装 jq) - 远程机器测试:
curl -s http://YOUR_SERVER_IP:2375/info | grep -i 'ncpu\|memtotal' - IDEA / VS Code Docker 插件连接时,填入
tcp://YOUR_SERVER_IP:2375即可 - 若返回 JSON 数据,说明 API 已就绪;若超时或拒绝连接,请回查防火墙、安全组、监听地址(是否误写成 127.0.0.1)
不复杂但容易忽略:暴露 2375 就等于把服务器 root 权限交给任意能连上的人。正式环境请立即配置 TLS 双向认证,禁用明文 HTTP 接口。


















