在不同主机上使用Docker容器的Selenium Grid

3
我想在AWS上使用官方的Docker镜像设置Selenium网格,这些镜像可以在此处找到:https://github.com/SeleniumHQ/docker-selenium Hub和节点应该驻留在不同的机器/ Docker主机上。
我使用了ambassador容器,如此处所述:https://docs.docker.com/articles/ambassador_pattern_linking/ (hub) -> (selenium-ambassador) --network--> (selenium-ambassador) -> (node)
我创建了两个EC2实例并执行了以下命令:
在Hub机器上:
$ 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号端口。

我希望有人能帮助我或给我一个线索?提前致谢。

1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接