Docker Selenium chromedriver通过VPN不能运行超过51个容器

时间:2018-07-01 18:17:43

标签: selenium docker selenium-chromedriver vpn

                   container ... linked through --net=container:VPNContainer 
                              -> Container 1 (runing chrome)
                              -> Container 2 (runing chrome)
    SYSTEM -> VPNContainer    -> Container 3 (runing chrome)
                              -> Container 4 (runing chrome)
                              -> Container ... (runing chrome)
                              -> Container 52 (running chrome)

我有一个通过python-> selenium-> chromedriver打开chrome的docker镜像 我通过我的vpn容器运行了51个docker容器后

Message: unknown error: DevToolsActivePort file doesn't exist,
  (Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.9.93-linuxkit-aufs x86_64)

如何重现错误:

创建打开chrome的docker映像 通过

通过vpn容器图像运行该docker图像
--net=container:yourvpncontainer

通过 yourvpncontainer 运行51个以上的容器 在容器52上,您会收到错误消息。

vpn container


如何解决此问题,以及为什么会出现此错误?

每个docker容器都有其自己的chromedriver并自身运行,因此没有硒集线器或仅包含本身具有全部内容的docker映像,所以为什么会出现端口错误,我只是通过net命令使用vpn作为我的网络?以及解决方法

1 个答案:

答案 0 :(得分:0)

如果要在VPN中手动启动容器,则表示docker的实现不完整。在这里利用docker的更好方法是通过 docker-compose 文件。

selenium-hub:
  image: selenium/hub
  ports:
  - 4444:4444

chrome:
  image: selenium/node-chrome
  links:
  - selenium-hub:hub
  environment:
    HUB_HOST: hub
  volumes:
  - /dev/shm:/dev/shm 

firefox:
  image: selenium/node-firefox
  environment:
    HUB_PORT_4444_TCP_ADDR: hub
  links:
  - selenium-hub:hub 

所有要做的就是在包含此yml文件的目录中运行docker-compose up -d,它将产生一个带有1个chrome和1个firefox节点的集线器。控制台日志已分离,如果您也想查看该日志,只需在此命令中省略-d开关。

现在,为了进行扩展,请在包含该文件的同一目录中打开一个新终端,然后运行docker-compose scale chrome=5 firefox=5和BOOM!您的FF节点总数为5,Chrome节点总数为5。

运行docker ps并立即查看所有正在运行的容器状态。