没有在同一主机中的两个docker容器之间托管的路由

时间:2014-12-26 08:00:22

标签: docker

我有两个在相同主机上运行的docker容器(centos 6服务器)。

容器1>>我的Web应用程序(端口映射到主机的某个随机端口)
容器2> python selenium testscripts(Runs headless Firefox)

我的测试用例未能说明问题加载页面 基本上问题是第二个容器或驻留在同一主机上的任何其他容器无法访问我的Web应用程序。 但我的网络应用程序可以访问外部世界

我联系了两个容器,但我仍面临着问题 我尝试在笔记本电脑(ubuntu)中复制相同的设置,并且工作正常!

任何帮助表示赞赏!! 提前致谢

4 个答案:

答案 0 :(得分:2)

我认为订单在连接容器方面很重要。您应该使用container1启动link网络应用,然后container2 webapp

答案 1 :(得分:1)

您需要更改selenium脚本以使用docker link id或别名作为主机名。

例如,如果您这样做:

$ sudo docker run -d --name webapp my/webapp
$ sudo docker run -d -P --name selenium --link webapp:webapp my/selenium

然后你的selenium脚本应该指向http://webapp/

答案 2 :(得分:1)

我在Fedora(22)中遇到过这个问题 - 对于某些容器(不是全部)。经过检查,它显示iptables上有一个特殊的DOCKER链,可以使一些连接松动。为该链附加接受规则使事情有效:

sudo iptables -A DOCKER -p tcp -j ACCEPT  

(在点击此问题之前搜索问题时,有人建议在CentOS和RHEL中也会出现这种情况)

答案 3 :(得分:0)

是的,容器启动的顺序很重要,但我正在通过jenkins启动我的Web应用程序容器。

jenkins在容器2中配置。 所以我无法手动启动我的Web应用程序(容器1)。

还有其他解决办法吗,比如双向联动?