0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Windows上应用Docker开展动态代码测试

Vector维克多 ? 来源:Vector维克多 ? 作者:Vector China ? 2021-10-28 11:08 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

随着软件项目复杂度的提升和不可控的团队资源变更,研发组织对DevOps部署的灵活性、可快速迁移和适配CI/CD的迭代提出了更高的要求。传统的虚拟机方案,即模拟出一个完整操作系统,对这类需求显得力不从心;而轻巧和便捷的容器技术通过在宿主机操作系统上应用虚拟化,直接胜出。本文主要介绍容器技术的代表产品Docker,并对Docker与虚拟机进行对比,以及如何在Windows上应用Docker开展动态代码测试和实现与Jenkins的持续集成。

1

Docker简介

Docker是一组PaaS(Platform as a Service,平台即服务)产品,通过操作系统层级的虚拟化提供称为容器的打包软件服务。Docker起源自2008年在巴黎初创的dotCloud公司,后于美国进行孵化和注册,于2013年3月宣布遵从Apache2.0协议开源,同年9月正式更名为Docker,次年在0.9版本上用Go语言编写的libcontainer组件替代了LXC(Linux Container)。

Docker可以让开发者基于选定的镜像(Image),打包目标应用以及依赖包到一个轻量级、可移植的容器(Container)中,并通过客户端的docker命令实现对Docker主机内容器的操控;当前容器也可创建成新的镜像,而所有镜像都存放在仓库(Registry)中,类似GitHub一样分为共有仓库和私有仓库。

2

容器技术与虚拟机的比较

容器和虚拟机虽然都使用虚拟化技术,但容器(图2)并不是模拟一个完整的操作系统,而是在宿主机操作系统上应用虚拟化技术;胜在“轻巧”,可实现软件应用的秒级启动和响应。相比而言,虚拟机冗余步骤多、启动太慢、占用内存硬盘资源,过于笨重。

此外,容器彼此间互相隔离,可通过预定渠道进行通信(即共享宿主机的操作系统)。基于镜像可便捷地创建容器和分发构建环境,契合DevOps和敏捷开发等对快速部署和应用的需求。

3

Windows上使用Docker运行

VectorCAST

Windows上Docker安装信息可参照:

https://docs.docker.com/desktop/windows/install/

3.1 运行带GUI的Ubuntu镜像,创建并启动容器

镜像使用参照https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc/

docker run -p 6080:80 -v D:DockerData:/dev/shm --name ubuntu-desktop dorowu/ubuntu-desktop-lxde-vnc:xenial

参数解析

docker,Docker的二进制执行文件。

run,与前面的docker组合来运行一个容器。

-p,指端口绑定。

-v,设定共享目录,为了将安装包保存到容器中,需要指定目录。D:DockerData指本地目录,可以自定义;/dev/shm是指容器中的目录。将需要复制到容器中的文件放置到D:DockerData中,在容器中就可以进入/dev/shm来访问这些文件。

–name,设定容器名称,如不指定,则设置一个随机生成的名字。

:xenial,指定镜像的版本,如不指定,则默认使用最新版本。

dorowu/ubuntu-desktop-lxde-vnc:xenial,指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker就会从镜像仓库Docker Hub下载公共镜像。

上述命令完整的意思可以解释为:Docker以dorowu/ubuntu-desktop-lxde-vnc:xenial镜像创建一个名为ubuntu-desktop的容器,指定端口6080:80进行通信,指定D:DockerData以及/dev/shm为Windows和Ubuntu的共享目录。

3.2 在容器中安装并使用VectorCAST

a.

在浏览器中打开http://127.0.0.1:6080/,进入Ubuntu的桌面界面,打开命令行。

b.

进入/dev/shm目录找到在Windows的D:DockerData下存放的VectorCAST安装文件,并按Linux下的安装方法常规安装以及配置,在此不作赘述。

*若提示找不到命令时(镜像未安装),可执行apt update以及apt install命令进行安装即可。

c.

运行VectorCAST,确认获取到License。

d.

创建环境并执行测试用例。

3.3 基于已有容器创建私有镜像

为实现工具安装的快速部署和避免依赖包可能导致的不兼容问题,在安装VectorCAST的容器基础上创建私有镜像提交至本地并打包,即可通过推送或分发达成需求。

a.

docker images查看现有镜像:

b.

docker ps查看在运行中的容器:

此容器已经安装了VectorCAST,在此基础上创建镜像。Commit命令需要使用这里的红框内容器ID。

c.

docker commit创建镜像,并用docker images查看已创建的镜像myubuntu:2.0:

docker commit -m “create ubuntu with VectorCAST installed” -a “vector” e94998fcde2f myubuntu:2.0

d.

基于创建的新镜像创建容器并启动:

docker run -p 6081:80 --name ubuntu_new myubuntu:2.0

e.

进入Ubuntu桌面,确认容器中有已安装好的VectorCAST:

f.

Docker save打包镜像至tar文件,可以拷贝至其他宿主机使用:

docker save -o my_ubuntu_v2.tar 919c1693ccee

4

Jenkins + Docker实现CI/CD

Docker为DevOps提供了很好的基础支撑:

轻量。可以快速启动和部署一个复杂的开发环境;

通过编写Dockerfile可以将业务容器化。将Dockerfile提交到代码仓库中,在持续集成的过程中基于已有的Dockerfile来构建镜像 ,极大提升持续集成的构建速度;

镜像仓库使分发变得十分简单。当镜像构建完成后,无论在哪里只需要执行docker pull命令就可以快速地将镜像拉取到本地并且启动应用。

接下来介绍从Jenkins Pipeline中启动Docker容器,运行VectorCAST测试环境并生成测试报告的过程。

4.1 编写测试脚本

在容器中编写运行VectcorCAST测试工程的脚本start_vcast_cmd.sh,后续会在Pipeline中调用此脚本:

4.2 宿主机上创建Jenkins Pipeline

jenkins_run_docker.bat文件中主要执行开启容器以及运行容器中事先准备的脚本start_vcast_cmd.sh:

4.3 构建Pipeline并查看报告

共享目录中生成了测试报告Full_Status.html,用户可以在宿主机上进行查看:

4.4 引入看板工具Squore分析测试结果

看板管理工具Squore可以在Jenkins Pipeline中进行部署和配置,自动导入VectorCAST测试结果进行分析,以便用户直观地查看代码质量和趋势分析,实现对项目管理和决策的优化。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    4

    文章

    3615

    浏览量

    91592
  • 容器
    +关注

    关注

    0

    文章

    512

    浏览量

    22503
  • 代码
    +关注

    关注

    30

    文章

    4905

    浏览量

    70995

原文标题:Windows上应用Docker容器技术的动态代码测试

文章出处:【微信号:VectorChina,微信公众号:Vector维克多】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    创龙 瑞芯微 RK3562 国产 2GHz 四核A53 工业开发板—Docker容器部署方法说明

    Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包至一个可移植的镜像中,然后发布至任何流行的Linux或Windows机器,亦可实现虚拟化。容器是完全使用沙箱机制,相互之间
    的头像 发表于 07-03 11:00 ?150次阅读
    创龙 瑞芯微 RK3562 国产 2GHz 四核A53 工业开发板—<b class='flag-5'>Docker</b>容器部署方法说明

    docker无法启用怎么解决?

    mengxing@mengxing-virtual-machine:/etc/docker$ sudo systemctl daemon-reload
    发表于 06-23 07:17

    何在k230运行OpenCV的代码?

    何在k230运行OpenCV的代码
    发表于 06-17 06:06

    何在Android设备安装Cyusb3014芯片驱动?

    1.如何在Android设备安装Cyusb3014芯片驱动? 我们在 Windows 上有 FX3 驱动程序 SDK。 2.如何在Android系统上下载固件到芯片中?
    发表于 05-15 07:23

    Docker Compose的常用命令

    。它通过一个配置文件(docker-compose.yml)来详细定义多个容器之间的关联、网络设置、服务端口等信息。使用一条简单的命令,就可以轻松启动、停止和管理这些容器,极大地简化了多容器应用的部署与管理流程,方便实现应用的快速构建、开发、测试以及部署。
    的头像 发表于 04-30 13:40 ?501次阅读

    S32K311如何在Flash测试ECC?

    我有一些与目标 S32K311 的 Flash ECC 相关的问题 - ERM 是否负责 Code Flash 和 Data Flash ECC 中断通知? - 我们如何在 Flash
    发表于 04-14 08:47

    【技术案例】Android in Docker

    的资源利用,广泛用于开发、测试和生产环境中。AndroidinDocker介绍宿主机系统中通过docker运行Android容器。利用docker的特性,我们可以将
    的头像 发表于 04-02 16:33 ?747次阅读
    【技术案例】Android in <b class='flag-5'>Docker</b>

    使用Windows中的Docker容器运行DL Streamer出现报错怎么解决?

    使用 Windows* 中的 Docker 容器运行 DL Streamer。 遇到错误: gi.repository.GLib.GError: gst_parse_error: 无元素 “vaapih264enc” (1)
    发表于 03-05 07:04

    基于 Docker 与 Jenkins 实现自动化部署

    优化,为 Docker 容器化应用与 Jenkins 自动化流水线提供了理想的运行环境。无论是快速构建、测试还是部署,Flexus X 都能确保流程顺畅无阻,大幅提升软件开发与交付效率。立即拥抱华为云
    的头像 发表于 01-07 17:25 ?556次阅读
    基于 <b class='flag-5'>Docker</b> 与 Jenkins 实现自动化部署

    何在Windows中使用MTP协议

    、图片等)的通信协议,它被广泛用于Android设备。以下是如何在Windows中使用MTP协议的详细步骤: 1. 确保设备支持MTP 首先,你需要确认你的设备支持MTP协议。大多数现代Android
    的头像 发表于 01-03 10:26 ?2843次阅读

    Flexus X 实例 C#/.Net Core 结合(git 代码管理、docker 自定义镜像)快速发布部署 - 让你的项目飞起来~

    Docker 容器化部署,实现代码高效管理与无缝迁移。即刻行动,让您的 Web 服务更加稳定、高效,领跑数字化转型之路! ???本实验深入演示了如何在 Ubuntu 环境中,利用 Git 进行版本控制管理
    的头像 发表于 12-25 21:15 ?631次阅读
    Flexus X 实例 C#/.Net Core 结合(git <b class='flag-5'>代码</b>管理、<b class='flag-5'>docker</b> 自定义镜像)快速发布部署 - 让你的项目飞起来~

    何在windowsemulate不同操作系统

    一、虚拟化技术概述 虚拟化技术允许在单个物理机器创建多个虚拟机,每个虚拟机都可以运行不同的操作系统。这使得我们可以在Windows系统模拟其他操作系统,而无需购买额外的硬件。虚拟化技术的关键组件
    的头像 发表于 12-05 15:50 ?919次阅读

    何在树莓派上安装Docker容器

    Pi官网 下载最新版本的Raspberry Pi OS。 使用SD卡写入工具将镜像写入SD卡:可以使用 Etcher 等工具。 将SD卡插入树莓派并启动。 2. 更新系统 在安装Docker之前
    的头像 发表于 11-11 11:38 ?2026次阅读

    Docker运行环境安装

    、发布、测试和部署,可以帮助开发人员将最新版本代码应用到生产环境中。 Docker可以安装在多个平台中,包括Mac、Windows和Linux。不过,生产环境还是推荐在Linux
    的头像 发表于 10-29 11:28 ?713次阅读

    如何通过Docker使用香山

    资源包在通过Docker形式提供了运行香山必须的Linux操作系统、香山开发环境、香山和仿真相关工具的代码,会大大降低自己部署环境和工具的难度,理论比自己部署要方便。如果想自己配置,可以参看本地使用香山的文档自行安装。
    的头像 发表于 10-29 09:38 ?712次阅读
    如何通过<b class='flag-5'>Docker</b>使用香山