当前位置: 首页 > 知识库问答 >
问题:

Docker容器无法到达本地主机端口4444。为什么呢?

柴浩大
2023-03-14

我封装了一个应用程序,它是自动化Selenium测试的测试驱动程序。Selenium服务器(也称为Selenium Hub)运行在另一个容器中,以及本地主机4444下的Firefox节点。但我的应用程序无法访问它:

Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: '10d3b5fd1010', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-4-amd64', java.version: '1.8.0_11            1'
Driver info: driver.version: RemoteWebDriver
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:665)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:158)
        at de.services.impl.TestSetupFactory.getWebDriver(TestSetupFactory.java:408)
        at de.services.impl.TestSetupFactory.getSeleniumService(TestSetupFactory.java:279)
        at de.services.impl.AutomationServiceImpl.executeTests(AutomationServiceImpl.java:220)
        at de.start.Start.main(Start.java:25)
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:4444 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: C            onnection refused (Connection refused)
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:158)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)

我通过docker-comush启动了这些容器:

version: '2'
services:
  hub:
    image: selgrid:1.1
    ports:
      - "4444:4444"

  firefox:
    #pull latest from docker hub
    image: selenium/node-firefox
    volumes:
      - /dev/urandom:/dev/random
    depends_on:
      - hub
    environment:
      - HUB_PORT_4444_TCP_ADDR=hub
      - HUB_PORT_4444_TCP_PORT=4444
  testautomation:
    #run testautomation app
    image: volumetest
    links:
      - "hub"
    ports:
      - "9005:9005"

我猜我的docker作文有错,但我想不出来。请帮忙!顺便说一句:我在Windows 7上运行,使用Docker和一个流浪的虚拟机。在我的文件中,我将端口4444和9005映射到主机系统。如果我打开本地浏览器,找到localhost:4444,我可以看到selenium网格控制台。为什么我的应用程序容器无法运行?

共有2个答案

刘修能
2023-03-14

我面临同样的问题后,移动到docker-comush版本2。这是我得到的日志

html prettyprint-override">Connect to localhost:4444 [localhost/127.0.0.1] failed: Connection refused

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
能正青
2023-03-14

在你的应用容器中,localhost表示当前容器。因此,您需要使用服务的名称。在你的例子中,哪个是hub

所以连接到hub:4444

 类似资料:
  • 问题内容: 我将一个应用程序容器化,该应用程序是自动selenium测试的测试驱动程序。Selenium服务器(也称为Selenium Hub)在localhost:4444下的另一个Container和Firefox Node中运行。但是我的应用程序无法达到它: 我通过docker-compose启动了这些容器: 我想我的docker-compose中有一个错误,但我无法弄清楚。请帮忙!顺便说一

  • 我在远程VPS上的docker-compose网络中运行容器。我希望能够从我的本地主机访问在这些容器中运行的数据库。 例如,如果容器和位于VPS上的容器网络中,我希望从计算机的访问。Kubernetes的CLI允许使用。 编辑:我已经接受了Ali Tou的回答,但是,如果能看到一个不需要重新启动容器来重新配置其端口以将它们暴露到主机上的解决方案,那就太好了。 编辑2:我在一篇相关的文章https:

  • 问题内容: 主机可以打开Docker容器访问端口吗?具体来说,我在主机上运行了MongoDB和RabbitMQ,我想在Docker容器中运行一个进程以侦听队列并(可选)写入数据库。 我知道我可以将端口从容器转发到主机(通过- p选项),并可以从Docker容器中连接到外部环境(即Internet),但我不想公开RabbitMQ和MongoDB端口从主持人到外界 编辑:一些澄清: 我必须执行此技巧才

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839

  • 问题内容: 说,如果我在Docker容器中使用此命令。 这里的本地主机指的是什么?主机的IP还是Docker容器自己的IP? 问题答案: 从容器内部开始 ,始终引用当前容器。它永远不会引用另一个容器,也永远不会引用物理系统中运行的不在同一容器中的任何其他内容。建立与数据库主机的出站连接或将其配置为数据库主机通常没有用。 从主机系统上的Shell中 ,可以指代在Docker之外的系统上运行的守护程序

  • 我可能遗漏了一些可笑的东西,但我试图向我的主机(Mac)公开的每个docker容器似乎都不起作用。我可以看出这些容器正在运行,并且似乎已经正确地暴露在我选择的端口中。我错过了什么明显的东西吗?任何帮助都将不胜感激。 我下载了最新的ElasticSearch图像:https://www.elastic.co/guide/en/elasticsearch/reference/current/docke