Docker Container无法访问本地主机端口4444。为什么? [英] Docker Container cannot reach localhost port 4444. Why though?

查看:364
本文介绍了Docker Container无法访问本地主机端口4444。为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将一个应用程序容器化,该应用程序是自动硒测试的测试驱动程序。 Selenium服务器(也称为Selenium Hub)在localhost:4444下的另一个Container和Firefox Node中运行。
但我的应用程序无法访问它:

I containerized an application which is the test driver of an automated Selenium test. The Selenium server (also called Selenium Hub) is running in another Container, as well as the Firefox Node, under localhost:4444. But my app is not able to reach it:

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-compose启动了这些容器:

I started these containers via docker-compose:

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-compose中有一个错误,但是我无法弄清楚。请帮忙!
btw:我在Windows 7上运行,并将Docker与Vagrant VM结合使用。在我的Vagrantfile中,我将端口4444和9005映射到了主机系统。如果打开本地浏览器并访问localhost:4444,则可以看到硒网格控制台。为什么不能在我的应用容器中使用它?

I guess there is a mistake in my docker-compose, but I can't figure it out. Please help! btw: I am running on Windows 7 and using Docker with a Vagrant VM. In my Vagrantfile I mapped port 4444 and 9005 to the host system. If I open my local browser and reach for localhost:4444, I can see the selenium grid console. Why it won't work from my app container?

推荐答案

在您的应用容器中 localhost 表示当前容器。因此,您需要改用服务名称。在您的情况下是 hub

In your app container localhost means the current container. So you need to use the name of the service instead. Which in your case is hub

所以连接到 hub:4444

这篇关于Docker Container无法访问本地主机端口4444。为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆