我想在AWS上使用官方Docker图像设置Selenium Grid,可在此处找到https://github.com/SeleniumHQ/docker-selenium
集线器和节点应驻留在不同的计算机/ docker主机上。
我使用大使容器,如下所述:https://docs.docker.com/articles/ambassador_pattern_linking/
(hub) - > (selenium-ambassador) - 网络 - > (selenium-ambassador) - > (节点)
我创建了两个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。
我希望,任何人都可以帮助我或给我一些线索?提前谢谢。
答案 0 :(得分:10)
经过一些研究,我发现不需要额外的大使容器。在设置适当的参数/环境变量REMOTE_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