Selenium网格与不同主机上的Docker容器

我喜欢在AWS上使用正式的Docker镜像来设置Selenium Grid,可以在这里findhttps://github.com/SeleniumHQ/docker-selenium

集线器和节点应驻留在不同的机器/docker主机上。

我使用大使容器,如下所述: https : //docs.docker.com/articles/ambassador_pattern_linking/

(集线器) – >(selenium大使) – networking – >(selenium – 大使) – >(节点)

我创build了两个EC2实例并执行以下命令:

在中心机器上:

$ docker run -d --name selenium-hub selenium/hub:2.47.1 $ docker run -d --link selenium-hub:selenium-hub --name selenium_ambassador -p 4444:4444 svendowideit/ambassador 

在节点机器上:

 $ docker run -d --name selenium_ambassador --expose 4444 -e SELENIUM_PORT_4444_TCP=tcp://<public-AWS-EC2-IP>:4444 svendowideit/ambassador $ docker run -d --link selenium_ambassador:selenium-hub selenium/node-chrome:2.47.1 

运行最后一个命令后,在节点机器上收到以下错误消息:

 Not linked with a running Hub container 

每个EC2机器上的安全组允许端口22和4444。

我希望,任何人都可以帮助我,或给我一个线索? 提前致谢。

经过一番研究,我发现没有多余的大使容器是必要的。 设置适当的参数/环境variablesREMOTE_HOST,HUB_PORT_4444_TCP_ADDR,HUB_PORT_4444_TCP_PORT后,节点和集线器可以直接通信。 还有一个相应的解决问题https://github.com/SeleniumHQ/docker-selenium/issues/51

简而言之,只需执行以下命令即可:

枢纽

 $ docker run -d -p 4444:4444 --name selenium-hub selenium/hub:2.47.1 

节点

 $ docker run -d -p 5555:5555 -e REMOTE_HOST="http://<PASTE-NODE-IP>:5555" -e HUB_PORT_4444_TCP_ADDR="<PASTE-HUB-IP>" -e HUB_PORT_4444_TCP_PORT="4444" --name chrome-node selenium/node-chrome:2.47.1