Docker常用测试平台搭建

一、Docker和虚拟机的区别

  • Docker没有虚拟化出操作系统的内核,直接使用宿主机的内核
  • Docker行为完全依赖于宿主机的内核
  • Docker不支持IE浏览器,因为它使用的是linux系统
  • 使用Docker不能做系统的兼容性测试,因为Docker完全依赖于宿主机操作系统

Docker只能做Linux能做的事情,Linux不能做的事情Docker一定做不了。

搭建Selenium Grid

二、搭建Selenium Grid

  1. 搭建hub
  • docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium
    image.png
  1. 创建节点node
  • docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium

    • NODE_MAX_INSTANCES 和 NODE_MAX_SESSION 要设置为相同的个数,决定了能够并行的node节点数即浏览器数。需要根据当前机器的性能来设置。
    • 如果想增加node节点,可以修改--name和端口再次执行上面的命令
      image.png
  • VNC密码是:secret

此时hub和node在同一台机器上部署的。如果是另一台机器连接到此机器的hub上,即在不同的机器上时就不能使用 --link 。下面将如何

“--link”原理以如何连接另一台机器的node

  • 进入到chrome节点下,docker exec -it chrome bash

  • 查看chrome节点下的有关hub的环境变量:env | grep HUB

    image.png

  • --link 其实是将hub的容器网络信息以环境变量的方式注入到node节点上,node只需要读取环境变量,以发出网络请求的方式连接hub即可。所以--link 原理就是环境变量的注入。

  • 其他机器的node连接hub需要在命令中加入:-e HUB_PORT_4444_TCP_ADDR=xxxx -e HUB_PORT_4444_TCP=xxxx来指定hub的端口地址

端口映射

  • 容器的ip地址是随机的,是随着docker启动自动生成的
  • 同一台机器不需要端口映射,即容器A容器B之间只需要知道对方的ip地址即可访问。但是基于上一条,容器的ip地址是随机的,所以需要使用 --link 来进行容器间的访问,当容器B使用命令 --link [容器A] 时,就会把容器A的地址和端口号注入到容器B的环境变量中。
  • 容器的ip是虚拟出来的,没在路由表中,需要将宿主机当做跳板进行访问,即访问宿主机的某个端口来访问容器
  • 不同机器上的容器要实现通信,必须通过宿主机与另一台宿主机的容器进行端口映射才能通信。图中容器C容器A实现通信,要么容器C宿主机1进行端口映射,要么容器A宿主机2进行端口映射。
    image.png

端口映射用来暴露网络,环境变量用来传参。

三、进行自动化测试

四、搭建Prometheus及Grafana

image.png

搭建MySQL

  • docker run --name some-mysql -v /home/insane/test/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 -d mysql:5.5
  • docker run -d --name test_sleep_infinity --link some-mysql centos sleep infinity
  • 进入mysql容器:docker exec -it some-mysql bash
  • 进入mysql:mysql -u root -p,输入密码即可
    image.png
  • 退出mysql:\q
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容