面试必问题之Docker分布式搭建

为什么要用Docker分布式搭建:

由于 Docker 可以高效地利用系统资源,提供一致性运行环境,不需要额外配置,更加方便进行持续集成和持续交付等优势,所以,在实际项目中,一般会采用 Docker 容器来搭建分布式环境

下载镜像

首先我们在服务器下载安装一下Doceer CE的免费版本,并胚子加速镜像源,最后重启Docker

# 编辑文件,输入镜像加速地址
sudo vi /etc/docker/daemon.json

# 输入地址
# Docker中国官方镜像加速
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

# 重启docker
systemctl restart docker

然后输入docker pull 命令下载下面3个镜像到本地:
1,selenium/hub:主节点镜像 hub
2,selenium/node-chrome:node 节点
3,selenium/node-chrome-debug:带有 VNC 服务端,便于观看执行步骤

# 主hub
docker pull selenium/hub

# node节点
docker pull selenium/node-chrome

# selenium/node-chrome-debug VNC Server
docker pull selenium/node-chrome-debug

运行容器

我们输入 docker run 命令,可以直接通过镜像创建一个容器并运行起来
首先我们得先创建并启动一个主hub容器,使用--name参数进行重命名

# 主hub
# -P:将容器端口映射到docker主机的一个随机端口上
# --name:重命名,便于管理
docker run -d -P --name hub_xag selenium/hub

然后,创建并启动 一 个Chrome node 节点容器,并使用-p 参数,将容器的 5900 端口映射到主机的5903 端口

# node节点
# --link:关联到hub主节点
docker run -d -p 5903:5900 --link hub_xag:hub --name node1 selenium/node-chrome

最后在创建一个chrome-debug容器,并将端口映射到主机的5900端口上

# chrome-debug容器
docker run -d -p 5900:5900 --link hub_xag:hub selenium/node-chrome-debug

使用 ocker ps -a命令即可以查看容器的运行状态及端口映射情况

在这里插入图片描述

需要注意的是,如果是部署在服务器,需要配置服务器防火墙和安全组规则

查看节点启动VNC

使用 Chrome 打开通过Docker主机IP + Hub主节点映射的端口号组成的 URL
比如:http://139.199.xx.xx/grid/console
可以很直观地看到当前 Hub 主节点下所有注册的 Node 节点列表

在这里插入图片描述

然后,在本机上下载安装 VNC Viewer,打开客户端软件
输入 Docker 主机IP + chrome-debug映射在Docker 主机的端口号,就可以实时查看Docker主机的运行情况
比如:http://139.199.xx.xx:5900
需要注意的是,第一次登陆默认的密码是:secret

在这里插入图片描述

编写脚本并运行

随手编写一段脚本,将 command_executor 参数中的地址设置为上面Hub 主节点IP 地址

from selenium import webdriver

driver = webdriver.Remote(
command_executor='http://139.199.xx.xx:32768/wd/hub',
desired_capabilities={'browserName': 'chrome'}
)

driver.get('https://www.baidu.com')

driver.find_element_by_id("kw").send_keys("欢迎关注公众号:AirPython")
driver.find_element_by_id("su").click()

print(driver.page_source)
运行脚本,可以发现 VNC Viewer 会展示完整的自动化过程。
实际项目中,可以下载 selenium/node-firefox-debug 镜像,通过镜像开启多个容器节点,只要保证端口号不冲突即可。
如此,结合 Docker,Selenium Grid可以非常方便地创建、管理分布式自动化测试环境。

以上就是小编今天为大家带来的内容了小编本身就是一名python开发工程师我自己花了三天时间整理了一套python学习教程从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴 点击 即可领取

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值