RSelenium调用Docker出现status 125错误及连接拒绝问题求助
解决RSelenium连接Docker Selenium容器时的Connection Refused错误(Status 125)
我之前在Win10环境下用Docker搭Selenium也踩过类似的坑,结合你的情况(Win10家庭版+默认Oracle VM+RSelenium),咱们一步步排查解决:
一、先确认Docker容器是否真的启动成功
Status 125通常意味着容器启动失败,先别着急连RSelenium,先检查容器状态:
- 打开终端运行:
docker ps -a - 如果看到容器的STATUS列是
Exited (125),那肯定是启动环节出问题了,先看日志找原因:docker logs <你的容器ID>
大概率是Oracle VM默认分配的内存不够(一般只有1G),Selenium+Firefox需要至少2G内存才能正常跑。
二、调整Oracle虚拟机资源
这是最常见的解决点:
- 打开Oracle VM VirtualBox,找到你的Docker虚拟机(一般叫default或者你自己命名的)
- 右键选择「设置」→「系统」→「主板」
- 把内存滑块调到2048MB(2G)以上,点击「确定」后重启虚拟机
三、确认IP地址和端口映射是否正确
你报错里的192.168.99.100是Docker Toolbox的默认IP,但如果是自己用Oracle VM装的Docker,IP可能已经变了:
- 进入Oracle虚拟机的终端,运行
ip addr(Linux系统),找到eth0/enp0s3对应的IP地址(比如可能是192.168.56.101之类的) - 先清理旧容器:
docker stop <容器ID> && docker rm <容器ID> - 重新启动容器:
docker run -d -p 4445:4444 selenium/standalone-firefox - 验证端口映射:
docker inspect <新容器ID>,找到Ports部分,确认4444/tcp已经映射到0.0.0.0:4445
四、调整RSelenium连接代码
别着急马上调用open(),给Selenium服务留点启动时间,同时用正确的IP:
library(RSelenium) # 把下面的IP换成你刚才查到的虚拟机实际IP remDr <- remoteDriver(remoteServerAddr = "192.168.xxx.xxx", port = 4445, browserName = "firefox") Sys.sleep(30) # 等待30秒让Selenium服务完全初始化 remDr$open()
五、检查Windows防火墙
Win10的防火墙可能会阻止虚拟机和主机之间的端口连接:
- 打开「Windows Defender防火墙」→「高级设置」
- 新建「入站规则」,允许TCP协议的4445端口通过,应用到所有网络类型
如果以上步骤都试过还是不行,可以试试用带Debug的镜像selenium/standalone-firefox-debug,然后用VNC工具连接虚拟机的5900端口,看看Firefox是不是能正常启动,不过这个对新手来说稍微复杂点,先把前面的步骤走完再说。
内容的提问来源于stack exchange,提问作者curly
相关产品推荐
相关产品推荐

