phpstorm连不上远程docker daemon,须改用tcp socket(如tcp://192.168.1.100:2375)而非远程socket路径;远程daemon需在/etc/docker/daemon.json中配置hosts启用tcp监听,并开放防火墙端口、验证用户组权限及ide启动环境。

PHPStorm 连不上远程 Docker daemon,先确认 socket 路径是否正确
PHPStorm 本身不运行 Docker,它依赖本地或远程的 docker CLI 工具与守护进程通信。所谓“Socket 设置”,实际是告诉 PHPStorm:该用哪个地址连 daemon —— 本地走 unix:///var/run/docker.sock,远程则必须走 TCP(如 tcp://192.168.1.100:2375),**不能直接填远程机器上的 /var/run/docker.sock 路径**。
常见错误是把远程服务器的 socket 文件路径(比如 /var/run/docker.sock)直接粘贴进 PHPStorm 的 “Docker configuration” → “Unix socket” 字段,这必然失败 —— 因为 PHPStorm 无法跨网络访问另一台机器的 Unix socket 文件。
- 本地开发:保持默认
unix:///var/run/docker.sock即可(前提是本机 docker 正常运行) - 远程开发:必须关闭 “Unix socket” 选项,改用 “TCP socket”,并填写
tcp://<remote-ip>:2375</remote-ip> - 如果远程 Docker 启用了 TLS,那得选 “TCP socket with TLS”,并提供
ca.pem、cert.pem、key.pem三个文件路径
远程 Docker daemon 没开 TCP 监听?daemon.json 必须改
绝大多数 Linux 服务器上,Docker 默认只监听 unix:///var/run/docker.sock,根本没开 TCP 端口。PHPStorm 就算填了 tcp://x.x.x.x:2375,也会报 connection refused 或超时。
要让远程 daemon 接受 TCP 请求,必须编辑 /etc/docker/daemon.json(不存在就新建),内容至少包含:
{"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]}
改完后执行:sudo systemctl restart docker。注意:别漏掉 unix:///...,否则本地 CLI 命令(如 docker ps)会失效。
- 仅开放内网 IP 更安全:把
"tcp://0.0.0.0:2375"换成"tcp://192.168.1.100:2375"(换成你服务器实际内网 IP) - 千万别在生产环境暴露 2375 到公网;如需公网访问,务必启用 TLS + 认证,且加防火墙白名单
- 改完
daemon.json后,用sudo lsof -i :2375确认端口确实在 LISTEN 状态
PHPStorm 报错 “Connection refused” 或 “timeout”,检查三件事
即使 socket 地址填对、daemon 也开了 TCP,仍可能连不上。核心排查点就三个:
- 远程服务器防火墙是否放行 2375 端口?
sudo ufw status或sudo firewall-cmd --list-ports查看;没开就执行sudo ufw allow 2375 - PHPStorm 所在机器能否 ping 通远程 IP?能 ping 通但 telnet 不通 2375,基本锁定是远程防火墙或 daemon 没监听该端口
- PHPStorm 是否用了代理?Settings → Appearance & Behavior → System Settings → HTTP Proxy 若设为 “Auto-detect” 或手动配置,可能干扰 Docker TCP 连接;建议临时设为 “No proxy” 测试
用户权限问题:PHPStorm 启动方式影响 socket 访问
如果你在 Linux/macOS 上通过桌面图标或 jetbrains-toolbox 启动 PHPStorm,它继承的是图形会话的环境变量和用户组权限 —— 即使你已执行过 sudo usermod -aG docker $USER,也可能因未重新登录而未生效。
最稳的验证方式是:终端里先运行 docker ps 成功,再在**同一终端中**执行 ./phpstorm.sh 启动 IDE。这样确保环境一致。
- 不要用
sudo ./phpstorm.sh启动 —— 这会让 PHPStorm 以 root 身份运行,反而无法读取你用户主目录下的配置,且有安全隐患 - 如果必须桌面启动,注销重登后仍不行,检查
groups命令输出是否含docker;若无,说明用户组未正确加载,可尝试重启系统 - Windows 用户无需操心此问题,因为 Windows 版 PHPStorm 依赖 WSL2 或 Docker Desktop,socket 路径自动适配
真正卡住的地方往往不是 PHPStorm 设置本身,而是远程 daemon 的监听配置、防火墙策略、以及本地环境变量与用户组权限的隐式耦合。每次改完服务端配置,务必用 curl -v http://<remote-ip>:2375/version</remote-ip> 在 PHPStorm 所在机器上手动测通,比在 IDE 里反复试错快得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











