欢迎来到书香知识百科
书香知识百科
当前位置:书香知识百科 > 数码

Docker 教程:如何作为容器创建和运行 Helix QAC

日期:2023-10-03 07:59

在本 Docker 教程中,您将学习如何作为容器化映像创建和运行 Helix QAC

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

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

还值得一提的是,Docker 开箱即用,并具有用于版本控制和组件可重用性的内置机制。这些 Docker 容器可以通过公共 Docker Hub 或私有存储库共享,使它们易于访问和使用。

以下是 Docker 的一些最显着的优点:

  • 快速部署:Docker可以为每个进程创建一个容器,然后可以根据需要快速启动和删除该容器,而无需启动平台操作系统(OS)。这将部署过程时间缩短至几秒钟。此外,Docker 镜像启动几乎是实时响应的。
  • 可移植性:Docker 允许将经过测试的容器化应用程序部署到任何其他运行 Docker 的系统,确保其完全按照您测试的方式执行。 Docker 镜像可以与其他团队共享。
  • 性能:虽然虚拟机 (VM) 是容器的替代方案,但 VM 具有操作系统,而 Docker 容器则没有。这意味着容器比虚拟机占用空间更小,创建速度更快,启动和删除时间也更快。
  • 持续集成效率:Docker 使您能够构建容器映像并在从开发到测试再到部署的每个步骤中使用它。此外,您可以分离不相关的步骤并并行运行它们,从而缩短从构建阶段到生产部署阶段所需的时间。这减少了设置环境和调试特定于环境的问题所花费的时间,使它们更可靠且更易于维护。

但是,Docker 有一些限制,尽管它们对 Docker 静态分析器的设置几乎没有影响,但了解它们仍然很重要。

  • Docker 并不是虚拟机的替代品:许多在虚拟机中运行的应用程序可以迁移到容器中,但这并不意味着它们都可以或应该迁移到容器中。例如:具有严格监管要求的行业可能无法将容器替换为虚拟机,因为虚拟机比容器提供更多的隔离性。
  • 容器中的数据:有时容器确实会发生故障,在这种情况下需要备份和恢复策略。虽然有多种解决方案,但没有一个是自动化的或可扩展的。另一个限制是,除非您在关闭之前将容器保存在某个位置,否则容器关闭时其中的所有数据都会永远消失。
  • 跨平台兼容性:如果应用程序设计为在特定平台(例如Windows操作系统平台或Linux)上的Docker容器中运行,这是一个主要问题,因为它无法在任何其他平台上运行。然而虚拟机则不受此限制,因此此限制使得 Docker 对于一些由 Windows 和 Linux 服务器组成的高度异构环境的吸引力较小。
  • 使用图形界面运行应用程序:通常,Docker 设计用于托管在命令行上运行的应用程序。虽然我们有多种方法可以在 Docker 容器内运行图形界面(例如使用),但是对于需要丰富接口的应用程序来说,我们可以说 Docker 并不是一个很好的解决方案。

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

第一部分:准备 Docker 引擎

  1. 从本网站 下载 并安装适用于您选择的操作系统 (OS) 平台的 Docker 引擎: https://m.shxueli.com/engine/install
  2. 进行验证如果 Docker 引擎已正确安装,请运行名为“hello-world”的示例 Docker 镜像。使用以下命令示例:
  • $ sudo docker run hello-world
  • 此命令将下载一个简单的“hello-world”测试 Docker 映像并在容器中运行它。因此,当容器运行时,它会打印消息并退出。

Docker 容器教程下一部分的目标是设置一个 Docker 容器作为Helix 静态代码分析工具 运行。有多种方法可以配置 Docker 镜像以支持不同的编码合规性模块,例如 MISRAAUTOSARCWECERT 和静电扫码工具等

但是,在本教程中,我将仅演示如何使用一些重要组件构建特定的 Docker 映像,这些组件将在 Docker 容器中用作 Helix QAC 工具 (DaaQT)。

此外,我将讨论在运行分析扫描工具时如何处理项目数据配置的持久性,以便您可以将 Helix QAC 项目规范和项目支持配置文件存储在 docker 容器之外,例如 prqa 项目文件夹和 pqraproject .xml. 支持的文件。

对这些文件所做的任何更改即使在 Docker 容器完成执行并关闭后也将保持不变。在 docker 执行上从构建到构建的任何构建脚本更改都将输出到主机上映射的外部项目文件夹并保留。

第二部分:创建、构建和运行

首先,让我们确定一些我选择用于构建 docker 映像的组件及其基本说明。

  • Helix QAC-2022.2(C/C++静态分析解析器
  • ASCM-3.3.0(AYTOSARC++14编码合规性)
  • M3CM -3.3。 0(MISRAC 2012 编码合规性)
  • MCPP-2.3.0(MISRAC++ 2008 编码合规性)
  • CERTCCM-2.3.0(支持 C 的安全编码标准)
  • CERTCCPCM- 2.3.0(安全编码标准,具有支持 CPP)

接下来,下载您尝试(或购买)的 Helix QAC 解析器工具和编码合规性模块,并将这些安装文件放置在主机上的已知文件夹位置。

  • 在我的示例中,将有六个文件(一个解析器工具文件和五个编码合规性模块)。

接下来,创建一个 docker 构建脚本文件。例如,我将文件命名为“qacDockerfile”,没有文件扩展名(默认名称为“dockerfile”)。 docker 引擎将使用此文件来创建 docker 镜像。基本上,它有一个命令列表,可以发送到 docker 引擎以自上而下的顺序执行它们。 。

然后将这些文件(包括qacDockerfile)放入DaaQT文件夹中。这些是生成此 docker 映像所需的唯一文件。另请注意,我已将它们放在“vDockerBuilds/DaaQT”文件夹下。

-->

关灯