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容器
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()
ubuntu安装Docker并部署selenium-grid的更多相关文章
- ubuntu安装docker以及基本用法
ubuntu安装docker以及基本用法 一.安装 安装前先更新apt-get源到最新版本 apt-get update 使用ubuntu自带的docker安装包安装docker apt-get in ...
- Ubuntu安装docker笔记
前言 根据参考文档简单记录Ubuntu系统安装docker的步骤 系统版本 panzi@ubuntu:~$ cat /etc/issue Ubuntu 16.04.5 LTS \n \l 移除旧版 ...
- 总结关于Ubuntu 安装 Docker 配置相关问题及解决方法
总结关于Ubuntu 安装 Docker 配置相关问题及解决方法 Tomcat 示例 软件镜像(xx安装程序)----运行镜像----产生一个容器(正在运行的软件,运行的xx): 步骤: 1.搜索镜像 ...
- ubuntu 安装 docker 并配置镜像加速(使用 apt-get 进行安装)
ubuntu 安装docker CentOS docker安装 https://blog.csdn.net/weixin_44953227/article/details/108597310 你需要这 ...
- Docker笔记--ubuntu安装docker
Docker笔记--ubuntu安装docker 1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选) sudo cp /etc/apt/sources.list /etc/apt/sourc ...
- Linux 上安装Docker 并部署netcor2.1
述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共享 ...
- Ubuntu安装 Docker CE,VNC访问docker图形界面并安装ROS
从包安装 如果您无法使用Docker的存储库来安装Docker CE,则可以下载.deb适用于您的发行版的 文件并手动安装.每次要升级Docker CE时都需要下载新文件. 安装Docker CE,将 ...
- Ubuntu安装Docker 适合Ubuntu17.04版本
Docker介绍 Docker是一个开源的容器引擎,它有助于更快地交付产品.Docker可将应用程序和基础设施层隔离,并且将基础设施当作程序一样进行管理.使用Docker,可以更快地打包,测试以及部署 ...
- 安装docker并部署web项目
一.docker简介 1.docker定义:docker是一个用来装应用的容器,就像杯子可以装水,笔筒可以装笔,书包可以放书一样.你可以把“Hello World!”放到docker中,也可以把网站放 ...
随机推荐
- c++,当const char*为0时,不能将其直接赋给string
下面程序会崩溃: const char* t_objName = (obj!=NULL)?obj->getName(): 0; string objName=t_objName; cout< ...
- Android_WebServices_源代码分析
本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/38037989 在Android_WebServices_介绍一文中, ...
- Node.js综述
前言 本综述文章旨在帮助读者深入理解下Node.js的本质,不去关注应用的细节,我认为真正的技术问题只有在动手写代码的时候才会遇到,那个阶段解决问题才是真正有意义的. 发展史 Node.js是Ry ...
- 李洪强漫谈iOS开发[C语言-053]-小结
/* 已经学习过的C语言语法 01 基本C程序结构 int main (void) int main(int argc,char *arv){...} 02 基本语句(输入输出) 基本头文件: #in ...
- 基于jQuery头像裁剪插件cropbox
今天给大家分享一款基于jQuery头像裁剪插件cropbox,这是一款简单实用的jQuery头像在线裁剪插件.该插件适用于适用浏览器:IE8.360.FireFox.Chrome.Safari.Ope ...
- Java反射机制在代理模式中的使用
代理模式的核心思路就是一个接口有两个子类,一个子类完成核心的业务操作,另一个子类完成与核心业务有关的辅助性操作. 代理模式分为静态代理模式和动态代理模式. 静态代理模式: //接口类 interfa ...
- hive中关键字作为列名的方法
hive中有很多关键字,直接作为列名,会出错的 例如 下面 user就是关键字,作为字段时报以下错误. 解决方案: 使用·· (ESC下面的那个键,点号)两个符号包裹即可.
- jquery-alert对话框
IE的alert没有标题,如果是做企业系统的话,弹出来的的感觉不是很好,所以自己找了一下国外有没有做好的,经过1个小时的奋斗,找到一个不错的,自己重写整理了一下 下载地址如下:http://downl ...
- PHP多进程(4) :内部多进程
说的都是只兼容unix 服务器的多进程,下面来讲讲在window 和 unix 都兼容的多进程(这里是泛指,下面的curl实际上是通过IO复用实现的). 通过扩展实现多线程的典型例子是CURL,CUR ...
- [Java] 高效快速导入EXCEL数据
需求1.高效率的以excel表格的方式导入多条数据.2.以身份证号为唯一标识,如果身份证号已存在,则该条数据不导入. 分析刚开始的时候是传统的做法,解析excel数据,获取单个对象,判断身份证是否已存 ...