首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >03 Docker实战之使用Docker提高测试执行效率

03 Docker实战之使用Docker提高测试执行效率

作者头像
测试开发囤货
发布于 2021-08-10 12:26:55
发布于 2021-08-10 12:26:55
7570
举报
文章被收录于专栏:测试开发囤货测试开发囤货

回顾

「3个场景快速上手Docker容器技术」

背景

考虑如下3个场景:

  • 问题一:A、B两位测试人员共同负责同一核心模块的测试,希望测试环境独立,互不影响;
  • 问题二:测试过程中发现某个问题,希望保留此现象环境,以便后面排查定位问题;
  • 问题三:有没有发现自己的host环境特别多,服务部署在各测试环境上,希望统一化管理。

解决措施

当然还有很多其他类似的问题,但现在用Docker容器技术统统可以帮我们解决。

操作步骤

对于问题一

我们知道,容器运行时,可以添加-p参数,以指定映射不同的主机端口:

代码语言:javascript
复制
# -p 指定主机端口和容器端口的映射关系
# -d 指定容器在后台运行
# 如下运行2个容器,映射到主机上不同的端口上
docker run -p 8080:80 -d helloworld:v1
docker run -p 8081:80 -d helloworld:v1

A、B测试人员分别使用不同的容器服务,是不是就没有之前的测试环境冲突的问题了?

对于问题二

此时我们使用docker commit打包一个状态镜像(还可以直接将镜像发布给开发),是不是也可以解决问题了?

Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。

docker commit 的语法格式为:

代码语言:javascript
复制
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]

我们可以用下面的命令将容器保存为镜像:

代码语言:javascript
复制
$ docker commit \
    --author "测试开发囤货 <jiawei.li2@qq.com>" \
    --message "默认网页弹窗bug" \
    webserver \
    nginx:v2
sha256:07e33465974800ce65751acc279adc6ed2dc5ed4e0838f8b86f0c87aa1795214

镜像定制好后,我们可以来运行这个镜像:

代码语言:javascript
复制
docker run --name web2 -d -p 81:80 nginx:v2

对于问题三

针对不同项目工程部署在不同测试环境的问题,有了Docker容器技术,我们也可以使用docker build打包,然后运行在同一主机上。

需要注意的是端口冲突的问题,如果你看到如下的错误,请检查看一下是否是端口冲突了:

代码语言:javascript
复制
docker: Error response from daemon: failed to create endpoint drunk_babbage on network bridge: Bind for 0.0.0.0:80 failed: port is already allocated.

下集预告

  • 使用Docker管理测试数据
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 回顾
  • 背景
  • 解决措施
  • 操作步骤
    • 对于问题一
    • 对于问题二
    • 对于问题三
  • 下集预告
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档