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


    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

  • 相关阅读:
    刷题-力扣-112. 路径总和
    刷题-力扣-1137. 第 N 个泰波那契数
    刷题-力扣-101. 对称二叉树
    刷题-力扣-99. 恢复二叉搜索树
    刷题-力扣-109. 有序链表转换二叉搜索树
    刷题-力扣-108. 将有序数组转换为二叉搜索树
    刷题-力扣-111. 二叉树的最小深度
    刷题-力扣-110. 平衡二叉树
    2019春Python程序设计练习6(0423--0429)
    2019春Python程序设计练习5(0416--0422)
  • 原文地址:https://www.cnblogs.com/chenqiAaron/p/15156329.html
Copyright © 2020-2023  润新知