文章目录

  • 第三部分:在本地项目上运行 DaaQT

在此 Docker 教程中,你将学习如何创建 Helix QAC 并将其作为容器化镜像运行。

Docker 的基本定义是一种开源和流行的操作系统级虚拟化(通常称为“容器化”)技术,它是轻量级的,可移植的,并且主要在Linux和Windows上运行。Docker 使使用容器创建、部署和运行应用程序变得更加容易。

从根本上说,容器只是一个正在运行的进程,并应用了一些附加的封装功能。借助容器,开发人员(和 DevOps 管理员)可以将应用程序与运行应用程序所需的一切(包括代码、运行时、库、配置的环境变量和配置文件)打包在一起,并将其全部作为一个包提供。

还值得一提的是,Docker可以立即启动,并具有用于版本控制和组件可重用的内置机制。这些 Docker 容器可以通过公共 Docker 中心或私有存储库共享,从而使其易于访问和使用。

以下是 Docker 的一些最显著的优势:

• 快速部署: Docker 可以为每个进程创建一个容器,然后可以根据需要快速启动和删除该容器,而无需启动平台操作系统 (OS)。这将部署过程时间缩短到几秒钟 此外,Docker 镜像启动几乎是实时响应的。

• 可移植性: Docker 允许将经过测试的容器化应用程序部署到运行 Docker 的任何其他系统,并确保其执行方式与您测试时完全相同。Docker 镜像可以与其他团队共享。

• 性能: 尽管虚拟机 (VM) 是容器的替代方法,但 VM 具有操作系统,而 Docker 容器则没有。这意味着容器的占用空间比 VM 小,创建速度更快,并且启动和删除时间更快。

• 持续集成效率: Docker 使你能够构建容器镜像,并在从开发、测试到部署的每个步骤中使用它。此外,您还可以分离不相关的步骤并且并行地运行它们,从而缩短从生成阶段到生产部署阶段所需的时间。这减少了设置环境和调试特定于环境的问题的时间,使它们更可靠,更易于维护。

但是,Docker 存在一些限制,尽管它们对 Docker 静态分析器 的设置的影响很小甚至为零,但了解这些限制对您来说仍然很重要。

• Docker 不能替代虚拟机: 许多在 VM 中运行的应用都可以移动到容器中,但这并不意味着它们都可以或应该移动到容器中。例如:具有严格法规要求的行业可能无法将容器交换为 VM,因为 VM 比容器提供更多的隔离。

• 容器中的数据: 有时容器确实会出现故障,在这种情况下,它需要备份和恢复策略。虽然有几种解决方案,但没有一个是自动化的或者尚不可扩展的。另一个限制是,除非您在容器关闭之前先将其保存在某个位置,否则当它关闭时,其中的所有数据都会永远消失。

• 跨平台兼容性: 如果应用程序被设计为在特定平台(如 Windows OS 平台或 Linux)上的 Docker 容器中运行,这是一个主要问题,因为它无法在任何其他平台上运行。但是,虚拟机不受此限制的约束,因此该限制使 Docker 对一些由 Windows 和 Linux 服务器组成的高度异构环境的吸引力降低。

• 使用图形界面运行应用程序: 通常,Docker 设计用于托管在命令行上运行的应用程序。虽然我们有几种方法(如使用 X11 转发或 MobaXterm )可以在 Docker 容器内运行图形界面,但这些过程很笨拙。因此,我们可以说Docker对于需要丰富接口的应用程序来说不是一个好的解决方案。

为了帮助将静态分析工具设置为 Docker 并解决这些限制,我将把设置分解为三个简单的部分。

一个适合入门者学习的网站是 https://docs.docker.com/get-started/overview ,其中包含有关设置 Docker 引擎的大量详细信息,以及如何验证环境的正确设置。

第一部分:准备Docker引擎 + 第二部分:创建、生成和运行——Docker 教程:如何将Helix QAC作为容器创建并运行 上

第三部分:在本地项目上运行 DaaQT

在使用此 docker 容器化镜像(Docker 作为 QAC 工具 – DaaQT)在本地桌面项目上运行任何静态代码分析之前,我们需要确保可以访问许可证服务器以获得使用该工具的权限。

在我的示例中,我将使用外部远程 Reprise 许可证管理服务器来请求要使用的许可证。

首先,我们需要创建一个本地项目运行脚本,该脚本知道在何处以及如何访问远程 Reprise 许可证服务器。此项目运行脚本还必须知道 Helix QAC Dashboard服务器所在的位置,以便在分析运行完成后上载项目诊断消息结果。

让我们回顾一下名为“runQACSCA.sh”的脚本文件及其内容。我将逐步提供一些关于它的作用的解释。

• 第 3 行是对桌面计算机上项目文件夹名称的引用。
• 第 7 行是 Helix QAC Dashboard服务器上的项目持有者的名称,用于上载诊断消息和项目信息。
(注意:第 8 行可用于与本地文件夹名称匹配。)
• 第 9 行到第 11 行是有关 Helix QAC Dashboard服务器的信息,例如 URL 地址(或 FQDN)、服务器端口和许可证服务器端口。
• 第 14 行是本地桌面项目工作区名称“服务器 URL 地址”(或 FQDN)、服务器端口和“许可证服务器端口”。
• 第 15 行和第 16 行引用了 Helix QAC 解析器工具所在的内部 docker 镜像,以及映射项目工作区位置。
• 第 19 行用于使 Docker 与许可证服务器通信,以请求工具许可证以供使用。
• 第 25 行将 Docker 镜像设置为映射的项目工作区所在的正确入口点。
• 第 28 行到第 29 行是选择要用于项目的规则配置文件之一。这些默认文件名是为特定规则组配置标识的。您可以通过合并任何一个或多个规则配置文件来创建自己的客户 RCF 文件,但是,自定义 RCF 文件需要在 Helix QAC 桌面 GUI 应用程序中完成,然后才能使用。此外,新的自定义名称需要与默认文件名不同。
• 第 34 行和第 35 行用于映射到要使用的编译器工具链。对于我的例子,我已经映射到使用任何一个 GNU C/CPP 11.2 版本。
• 第 38 行是创建 PRQA 项目配置并设置要求项目配置。
• 第41行允许Helix QAC监控和跟踪如何使用其命令在本地构建项目的方式。
• 如果项目需要执行一些关系跨模块分析 (RCMA) 和/或多线程分析 (MTA),则通常使用第 44 行和第 45 行。
• 第 47 行至第 49 行是选择一个编码合规性模块,用于满足您的编码合规性需求。请确保此设置与第 28 行到第 31 行的 RCF 设置匹配。
• 第 52 行是使用上述所有配置和设置参数对项目执行静态代码分析。
• 第55行是将项目分析扫描结果上传到Helix QACDashboard服务器,并将其放在项目支架中。上载的信息是包含诊断消息和项目配置设置的源代码文件。

运行以下 docker 命令,这些命令会将本地项目卷映射到 docker 项目卷,以便保留分析数据文件。请密切注意 ENTRYPOINT 参数,其中脚本文件“runQACSCA.sh”将从项目根文件夹执行。

以下是带有一些解释的Docker命令:

• docker run --rm -it -v ~/ProjectsSandbox/MyCppCodeQac:/QacWorkspace/MyCppCodeQac–entrypoint=/QacWorkspace/MyCppCodeQac/runQACSCA.sh qacscatools:22v2 “run”,就是执行。
• “-it”以交互方式运行 Docker(所以你会得到一个带有 STDIN 的伪 TTY)。
• “–rm” 使 Docker 在容器退出时自动将其删除。
• “-v”表示卷映射本地主机卷:DockerVolume。
• “–entrypoint”表示登录时从哪里开始,命令行开始运行带有说明内容的位置/file_name.sh。

您还可以使用 shell 脚本来运行它,而不必记住在命令行上键入所有这些参数。除了不必记住所有这些细节之外,这还允许我们对脚本文件进行最小的更改,以适应其他类似的项目。

对于我的示例,我创建了一个名为“runDaaQT.sh”的 shell 脚本。

显示 docker 命令行用法的屏幕截图。

显示 shell 脚本用法的屏幕截图。

(可选)还可以为 CMakeNinja 项目运行此Docker容器,它的命令行与之前演示的项目类似。此项目使用 CMake 和Ninja命令行构建系统。

要使用类似的命令行或 shell 脚本文件,您需要在命令行中对正确项目卷 (CMakeNinja) 名称的命令语法进行一些编辑,如下所示:

$> docker run --rm -it -v
~/QacProjectsSandbox/CMakeNinja:/QacWorkspace/CMakeNinja–entrypoint=/QacWorkspace/CMakeNinja/runQACSCA.sh
qacscatools:22v2

CMakeNinja项目的命令行用法截图。

➡️➡️➡️立即申请免费试用Helix QAC,发送邮件至info@polelink.com

Docker 教程:如何将Helix QAC作为容器创建并运行 下相关推荐

  1. Docker系列第04部分:查看容器+创建容器+启动容器+文件挂载+删除容器

    1 容器的创建和启动 1.1 虚拟机的生命周期 1.2 容器的生命周期 2.容器操作 2.1 查看容器 查看正在运行容器: docker ps 查看所有的容器(启动过的历史容器) docker ps ...

  2. docker-ce-17.09 容器创建,运行,进入,删除,导入/导出

    docker容器是镜像运行的一个运行实例,带有额外的可写文件层. 一.创建容器 > docker create -it centos:latest create命令新建的容器处于停止状态,可以使 ...

  3. mysql容器创建命令_centos7下docker创建基本的mysql容器

    首先安装并启动docker 安装docker命令如下 yum install -y docker  注意只限于centos7 在centos8下是不好用的 安装完成后先调整一下docker默认的镜像拉 ...

  4. 最详细的Docker教程、常见用法

    前言:公司开发中时常用到docker,简单进行整理和学习,方便自己查询. 一.Docker的概念 1. 基本认识 Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议 ...

  5. 自己动手写Docker系列 -- 5.1实现容器的后台运行

    简介 在前几篇中,我们已经构建了一个基础的镜像,本篇开始做一些进阶的功能,下面就是实现docker中的-d命令,让容器能够后台运行 源码说明 同时放到了Gitee和Github上,都可进行获取 Git ...

  6. 2023最强Docker教程

    文章目录 一.基本概念 1.Docker架构 2.Docker隔离原理 3. Docker 如何工作? 4.Docker安装 1.移除旧版本 2.设置docker yum源 3.安装最新docker ...

  7. 【docker教程】docker视频教程(ubuntu)数据卷挂载、数据卷容器volume、端口映射(镜像叠加,分层复用)rootfs、bootfs(没看完)

    黑马程序员Docker容器化技术,从零学会Docker教程 可以先看1-13课.以及 docker概述 文章目录 docker概述 ubuntu安装docker docker架构 配置docker镜像 ...

  8. 调音台docker教程_Docker教程:玩转容器(简单实例)

    [编者的话]Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会 ...

  9. docker mysql 蜂巢_在网易蜂巢中创建和管理Docker容器的教程

    创建容器点击左侧的导航菜单「容器管理」,进入容器管理列表页,通过点击容器列表左上角的「创建容器」按钮可进入创建容器页面,如下图所示: 其中带 * 为必填项. 选择镜像可选择的镜像分为「我的镜像」和「官 ...

最新文章

  1. android base64编码
  2. 安卓实训项目:基于储存卡音乐播放器实训报告4.0
  3. 基于FPGrowth挖掘算法的乳腺癌中医症型关联规则挖掘
  4. 第三方软件源_手机上的天气软件哪个更准确?
  5. 计算机用户账户无法打开浏览器,请问怎么样禁止一个电脑用户使用IE浏览器
  6. Linux_2.6字符设备驱动实例
  7. (44)FPGA时序逻辑与组合逻辑(组合逻辑)
  8. java去掉的行_Java实现去掉每行的行号
  9. 如何在macOS Big Sur中使用快速用户切换?
  10. Atitit.得到网络邻居列表java php c#.net python
  11. python数据保存为excel_Python读excel生成数据存入txt文件
  12. Newton形式的Hermite插值多项式
  13. 音乐倒数计数器(求解答,lcd相关知识点)
  14. 从人人网“死亡”看“级联”效应
  15. 麦克马斯特大学计算机的强项,麦克马斯特大学什么专业最好?
  16. 谷歌团队在平安金融中心_Google银行业务可以教给我们关于金融和科技的未来
  17. IT工程师读新工具论--从亚里士多德到培根随便扯扯
  18. Type接口的基础知识
  19. phpmailer实现邮件发送
  20. BQ40Z50/BQ4050/BQ40Z80 等 BQ40xxx 系列电量计外围电路设计指导

热门文章

  1. Android 启动“无启动图标的 apk“
  2. 依赖注入依赖注入容器
  3. JSM jQuery插件开源
  4. JMeter笔记9 | JMeter参数化
  5. createCriteria的用法
  6. axp202电源管理
  7. Python绘图一条龙--大小/坐标/标签/多图布局/配色方案等
  8. CAS实现的单点登录系统
  9. 植物大战僵尸java版视频_Java小项目之:植物大战僵尸,这个僵尸不太冷!
  10. axios 请求拦截器响应拦截器