测试开发之系统篇-Docker常用操作

原创
aaronchen2k
2021-07-20 16:03:23
3016

Docker容器(Container)的运行基于镜像(image),您可以在Docker Hub上检索,或通过Dockerfile文件自己构建镜像。

首先拉取MySQL官方镜像的最新版(latest)。


docker pull mysql

使用docker images显示本地的镜像

docker images

使用docker run命令来运行容器,-d设置在后台运行,并返回容器ID。

docker run -itd --name db-server -e MYSQL_ROOT_PASSWORD=P2ssw0rd mysql

使用docker ps查看正在运行的镜像,-a参数显示所有实例。

docker ps -a

使用docker exec命令,可进入容器内部系统的Shell。

docker exec -it db-server /bin/bash

在容器内完成相应操作/修改后,commit命令可提交更新到指定的镜像。

docker commit -m "update" -a "aaron" db-server registry.cn-shanghai.aliyuncs.com/aaron-share/db-server

更新本地镜像到镜像管理服务器,此处先完成了到阿里云镜像服务器的登录。

docker login --username=18626200000 registry.cn-shanghai.aliyuncs.com docker push registry.cn-shanghai.aliyuncs.com/aaron-share/db-server:latest

以下命令分别删除容器和镜像,-f可强制删除运行中的容器。

docker rm -f db-server docker rmi registry.cn-shanghai.aliyuncs.com/aaron-share/db-server


下面,我们简单介绍下,如何使用Dockerfile来构建镜像。以下Dockerfile以官方ubuntu系统镜像为起点,完成了一个简单的示例。

FROM ubuntu:latest                       # 基准镜像 
MAINTAINER aaron                         # 作者信息 
ARG APT=apt-get                          # 临时变量,构建容器时有效 
RUN $APT update \                        # 构建容器时执行的命令 
  && $APT install -y curl \
  && rm -rf /var/lib/apt/lists/*
CMD [ "curl", "-s", "http://baidu.com" ] # 运行容器时执行的命令

然后,就可以使用docker build命令来构建镜像。

docker build -t registry.cn-shanghai.aliyuncs.com/aaron-share/ubuntu-server:latest .


软件测试中,我们通常使用预制好的、不同环境的Docker镜像,来进行相应的测试。
可以使用上述的docker exec命令进入容器,执行测试命令;也可以直接在宿主机上执行docker run来执行测试。

docker run -i --rm \
  --name testng-in-docker  -v "$(pwd)":/usr/src/mymaven -v ~/.m2:/root/.m2 -w /usr/src/mymaven maven:latest 
  mvn clean test

以上使用了Java常见的Maven构建工具来执行测试,-v表示从宿主机到容器的路径映射,它

  • 通过$(pwd)命令获取当前项目路径,并映射到了容器内部的/usr/src/mymaven目录;
  • 将Maven类库的根目录~/.m2,映射到了容器内部的/usr/src/mymaven目录;
  • 拉取、运行名为maven的容器镜像的latest版本;
  • 容器启动时,立即运行mvn clean test命令执行测试;
  • 运行结束后容器直接退出,测试结果位于当前路径下。


另外,Docker Compose是一个用于定义和运行多容器的工具,如果您的服务包括了多个相互依赖的容器,可以使用他来编排、启动所有服务。详情可以参考这篇文章


本人在开源项目中,实现了基于Docker容器的按需测试环境管理,详情请参照网址https://github.com/easysoft/zagent。


Q: 如何在Docker中拉取MySQL官方镜像的最新版? A: 使用命令 `docker pull mysql` 来拉取MySQL官方镜像的最新版。


Q: 如何查看本地存储的Docker镜像? A: 可以使用命令 `docker images` 来显示本地存储的所有Docker镜像。


Q: 在Docker中,如何进入容器内部的Shell? A: 可以使用 `docker exec -it /bin/bash` 命令进入Docker容器内部的Shell。
  • ai_thumbnail_81410_1759110038.png
评论列表
🍓
腹黑的高山2025-11-21 09:01:33回复
有些操作确实简单有效,感谢详细解释!

推荐阅读

DevOps和它的朋友们——聊聊其他“Ops”(二)

DevOps有多个分支和子集,它们都基于独特的方法和有趣的想法。
Erin520 2020-11-23

十大自动测试工具,你在用哪些?

软件测试作为研发过程中的重要环节,其能否达到快速响应、有效度量,实现过程自动化、系统一体化的目标,对整个组织的研发效率和产品质量将产生深远的影响。
Erin520 2021-07-19

理解这八大优势,才算精通单元测试

简化调试过程、降低修复成本、保证代码质量……单元测试的好处你还不知道吗?!
Erin520 2020-06-04

Devops与敏捷二者能否结合?

DevOps的缺点是它不能支持敏捷开发中支持的代码的持续测试。与DevOps不同,敏捷主要关注产品是否满足客户的需求,因此专注于严格的测试。
Erin520 2020-08-20
返回顶部
客服头像
张淑钧
高级客户经理
客服微信
13156280939
2082428410
统一服务热线 4006-8899-23
我要提问提问有任何问题,您都可以在这里提问。问题反馈反馈点击这里,让我们聆听您的建议与反馈。