测试ShinyProxy-Demo时容器启动失败求助
解决方案:ShinyProxy无法连接Docker API(WSL2模式)
问题定位
从错误日志可明确核心问题:
Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: no further information
ShinyProxy无法连接Docker API端口,根源是WSL2模式下Docker Desktop的配置逻辑和Hyper-V不同,手动修改Windows侧的daemon.json不生效,甚至会破坏Docker正常启动。
分步解决
第一步:修正Docker Desktop的API暴露设置
- 打开Docker Desktop,进入
设置→通用,勾选在 tcp://localhost:2375 上暴露守护程序,无需 TLS - 进入
设置→资源→WSL 集成,确保正在使用的WSL发行版(如Ubuntu)处于启用状态 - 删除手动添加的
C:\ProgramData\Docker\config\daemon.json文件,WSL2模式下Docker守护进程配置由Docker Desktop统一管理,手动修改该文件会引发配置冲突
- 打开Docker Desktop,进入
第二步:配置ShinyProxy的application.yml
根据ShinyProxy的运行位置调整Docker地址:- 若ShinyProxy在Windows主机上运行,配置如下:
proxy: docker: url: tcp://localhost:2375 port-range-start: 20000 - 若ShinyProxy在WSL2内部运行,建议使用Unix套接字(稳定性更高):
proxy: docker: url: unix:///var/run/docker.sock port-range-start: 20000
- 若ShinyProxy在Windows主机上运行,配置如下:
第三步:验证Docker API连通性
- Windows终端执行:
curl http://localhost:2375/version,返回JSON格式的版本信息则说明API正常 - WSL终端执行:
curl --unix-socket /var/run/docker.sock http://localhost/version,返回版本信息即为正常
- Windows终端执行:
第四步:重启服务
重启Docker Desktop和ShinyProxy,再尝试打开应用
额外说明
单独运行docker run命令正常,是因为该命令直接调用Docker Desktop客户端(自动适配WSL2环境),而ShinyProxy需通过API端口连接,必须确保API端口正确暴露且无配置冲突。
内容的提问来源于stack exchange,提问作者toxin
相关产品推荐
相关产品推荐

