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上,您会收到错误消息。
如何解决此问题,以及为什么会出现此错误?
每个docker容器都有其自己的chromedriver并自身运行,因此没有硒集线器或仅包含本身具有全部内容的docker映像,所以为什么会出现端口错误,我只是通过net命令使用vpn作为我的网络?以及解决方法
答案 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
并立即查看所有正在运行的容器状态。