zoukankan      html  css  js  c++  java
  • ubuntu安装Docker并部署selenium-grid

    一、docker安装

    Ubuntu

    1.检查内核版本大于3.10

    unama -a
    

    2.更新apt源

    sudo apt-get update
    

    3.安装docker

    sudo apt-get install -y docker.io
    

    4.(建议)更新成国内源

    为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值。

    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    

    修改保存后重启 Docker 以使配置生效。

    5.启动、重启docker

    sudo service docker start
    
    sudo service docker restart
    

    (可选)检查docker运行情况

    sudo docker version
    

    这里我发现,许多操作都需要sudo,才能正常完成

    (可选)运行系统引导时启用 docker,

    systemctl enable docker
    

    CentOS7

    注意了,必须是CentOS7及以上,不然没法装docker-ce版,其余的网上很多教程,略

    二、配置selenium容器

    官方github

    1.从dockerhub搜索image

    sudo docker search selenium 
    

    2.选择合适的image

    1>下载主hub镜像(用于管理的)

    sudo docker pull selenium/hub
    

    2>下载主node chrome镜像(实际干活的)

    sudo docker pull selenium/node-chrome
    

    3.启动docker image

    1>启动selenium/hub

    sudo docker run -d -P --name selenium-hub selenium/hub
    
    • -d 表示容器以守护态(Daemonized)形式运行
    • -P 表示 Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口
    • --name 取个容器名NAMES

    2>启动selenium/node-chrome

    sudo docker run -d --link selenium-hub:hub selenium/node-chrome
    
    • --link 表示关联到selenium-hub并设置别名hub

    3>可选,扩大连接
    可以使用如下方式扩大并发

    docker run -d -P -e GRID_TIMEOUT=1800 -e GRID_MAX_SESSION=5 --name selenium-hub selenium/hub
    
    • -e GRID_TIMEOUT=1800 限制连接时间(s为单位,30分钟后,不管怎样都会断开连接)
    • -e GRID_MAX_SESSION=5 扩大会话数(上面默认是1)
    docker run -d -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 --link selenium-hub:hub selenium/node-chrome
    
    • -e NODE_MAX_INSTANCES=5
    • -e NODE_MAX_SESSION=5

    4>可选,偶然去github看了项目的md,官方指定的部署命令

    # 官方的
    docker network create grid
    docker run -d -p 4444:4444 --net grid --name selenium-hub selenium/hub
    docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome
    
    # 结合一下,扩大并发的选项
    docker network create grid
    docker run -d -p 4444:4444 --net grid -e GRID_MAX_SESSION=5 -e GRID_TIMEOUT=900 --name selenium-hub selenium/hub
    docker run -d --net grid -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome
    

    (可选)使用docker-compose部署

    真的是简便多了!docker-compose 轻松部署多容器

    4.验证成功

    1>查看运行情况

    sudo docker ps
    

    如下:

    CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                     NAMES
    3a17f7233a7b        selenium/node-chrome   "/opt/bin/entry_poin…"   7 minutes ago       Up 7 minutes                                  cranky_haibt
    9b273239c034        selenium/hub           "/opt/bin/entry_poin…"   10 minutes ago      Up 10 minutes       0.0.0.0:32768->4444/tcp   selenium-hub
    

    2>打开浏览器: http://192.168.81.98:32768/grid/console可以看到部署了一台chrome

    • 这里根据上图的0.0.0.0:32768可知暴露端口为32768
    • ubuntu主机ip:192.168.81.98

    5.python程序调用

    程序调用测试代码:

    from selenium import webdriver
    
    
    driver = None
    try:
        driver = webdriver.Remote(command_executor='http://192.168.81.98:32768/wd/hub',
                                  desired_capabilities={'browserName': 'chrome'})
    
        driver.get('https://www.baidu.com')
        driver.implicitly_wait(15)
        driver.get_screenshot_as_file("./baidu_img.png")
        print("OK")
    finally:
        if driver is not None:
            driver.quit()
    
  • 相关阅读:
    Django基础
    Web框架
    JQuery
    16 Javascript
    axios+qs传值序列化时出现数组形式我们该如何修改呢?
    MyBatis 对象中含有对象的查询
    MyBatis 新增获取自增主键的小坑
    List、Set、Map
    事务的隔离级别
    mybatis配置中文参考文档
  • 原文地址:https://www.cnblogs.com/haoabcd2010/p/10407434.html
Copyright © 2011-2022 走看看