我的计算机Windows 10上有“适用于Windows的Docker”。
我通过docker启动Selenium网格,如下所示:
docker run -d --name my-hub selenium/hub
docker run -d --name my-firefox -e HUB_HOST=my-hub -v c:/seleniumplus:/dev/seleniumplus selenium/node-firefox
docker run -d --name my-chrome -e HUB_HOST=my-hub -v c:/seleniumplus:/dev/seleniumplus selenium/node-chrome
我获得了容器“ my-firefox”和“ my-chrome”的IP地址,分别是172.17.0.3和172.17.0.4
docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" my-firefox
docker inspect -f "{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" my-chrome
我可以从Docker主机(我的计算机Windows 10)ping IP 172.17.0.3和172.17.0.4。
我在端口9876的容器“ my-firefox”上运行套接字服务器,然后尝试通过从Docker主机(我的计算机Windows 10)创建new Socket(172.17.0.3, 9876)
来建立与服务器的套接字连接,此操作失败有错误
线程“ main”中的异常java.net.ConnectException:连接超时:connect
有人知道这是怎么回事吗?如何运作?我不想使用端口转发,是的,我们可以将容器的端口9876映射到Docker主机的端口(例如9876),如下所示:
docker run -d -p 9876:9876 --name my-firefox -e HUB_HOST=my-hub -v c:/seleniumplus:/dev/seleniumplus selenium/node-firefox
然后我们可以通过new Socket("localhost", 9876)
顺便说一句,我进行了其他一些测试: 我在容器“ my-firefox”的端口9876上运行套接字服务器,然后尝试从另一个容器“ my-chrome”(172.17.0.4)建立到(172.17.0.3,9876)的套接字连接,并且成功。
我在端口9876的docker主机(我的机器Windows 10,其IP为172.27.20.204的Windows 10机器)上运行套接字服务器,然后尝试从一个容器(“ my-”连接到(172.27.20.204,9876) chrome”或“ my-firefox”)成功。