在此 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引擎

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

我们的 Docker 容器教程的下一部分的目标是将 Docker 容器设置为作为 Helix 静态代码分析工具 运行。有几种方法可以配置 Docker 镜像以支持不同的编码合规性模块,例如 MISRA 、 AUTOSAR 、 CWE 、 CERT 和静态代码扫描工具等。

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

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

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

第二部分:创建、生成和运行

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

• Helix QAC-2022.2 (C/C++ 静态分析解析器)
• ASCM-3.3.0(AYTOSAR C++14 编码合规性)
• M3CM-3.3.0 (MISRA C 2012 编码合规性)
• MCPP-2.3.0(MISRA C++ 2008 编码合规性)
• CERTCCM-2.3.0(对 C 的安全编码标准支持)
• CERTCCPCM-2.3.0(支持 CPP 的安全编码标准)

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

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

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

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

以下是“qac文档”脚本文件的内容以及一些说明。

• 第 1 行是使用 Ubuntu 22.04 作为基本镜像开始的。
• 第 4 行至第 7 行使 Ubuntu 操作系统保持最新状态,并允许时区设置。
• 第 10 行是可选的,但建议添加这些有用的工具,因为 Ubuntu 基础镜像是准系统镜像。
• 第 15 行将安装基本的构建工具、gnu 编译器依赖项和任何支持文件。此步骤对于编译器工具链使用需求会有所不同。但是,在我的示例案例中,此图像将使用 gcc/g++ 11 编译器。
• 第 19 行和第 20 行指示 Docker 引擎创建一个名为 “QacWorkspace” 的工作目录,所有子顺序命令都将使用该目录。
• 第 25 行将所有安装文件的权限更改为可执行文件。
• 第 28 行以静默模式安装 Helix-QAC 解析器工具并接受许可协议。
• 第 31 行至第 35 行以静默模式安装选定的编码合规性模块,并接受许可协议。
• 第 38 行正在清理安装文件,以使 docker 镜像尽可能小的占用空间。
接下来,要构建 docker 镜像,我们需要运行以下命令:
$> docker build --pull --no-cache -f qacDockerfile -t qacscatools:22v2.
• 拉取和无缓存参数是为了确保它始终获取最新的 ubuntu 镜像,并从头开始构建 docker 镜像。
• -f 是 qac Docker文件名称,默认情况下,原始名称是dockerfile。
• -t 是格式“名称:标签”,因此名称是“qacscatools”,标签是“22v2”,以指示使用了哪个Helix-QAC工具版本。
• 不要忘记末尾的“点”,这表明它是一个本地目录。

构建镜像过程完成后,您可以看到最后两行消息,这些消息指示写入文件并标记镜像。若要验证生成是否成功,请运行以下命令以显示所有可用 Docker 镜像的列表。

• $>docker images

(注意:在上图中,图像标记 ID 为 bd8c9d08dc4d。)

第三部分:在本地项目上运行 DaaQT——Docker 教程:如何将Helix QAC作为容器创建并运行 下

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

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

  1. Docker 教程:如何将Helix QAC作为容器创建并运行 下

    文章目录 第三部分:在本地项目上运行 DaaQT 在此 Docker 教程中,你将学习如何创建 Helix QAC 并将其作为容器化镜像运行. Docker 的基本定义是一种开源和流行的操作系统级虚拟 ...

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

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

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

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

  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容器的教程

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

  10. 【组队学习】【24期】Docker教程

    Docker教程 开源内容: https://github.com/datawhalechina/team-learning-program/tree/master/Docker 基本信息 贡献人员: ...

最新文章

  1. 特斯拉AI总监用300行代码实现“迷你版GPT”,上线GitHub三天收获3.3k星
  2. html5 文字定义线宽,html 5画布线宽
  3. CloudStack 制作window模板
  4. 心电信号去噪(part2)--中值滤波器
  5. jzoj4669-[NOIP2016提高A组模拟7.19]弄提纲【LCA,KMP,字符串】
  6. 使用 jQuery Mobile 与 HTML5 开发 Web App (十) —— jQuery Mobile 默认配置与事件基础
  7. activate tensorflow_“量子固件”来了!利用 TensorFlow 提升量子计算硬件性能
  8. LeetCode 5355. T 秒后青蛙的位置
  9. 基于阿里云服务器使用宝塔面板搭建 Typecho 博客
  10. 计算机专业基础 -- 数据结构入门与算法基础知识
  11. 2021最新一线互联网大厂常见高并发面试题解析
  12. Java判断操作系统是32位还是64位
  13. python求导函数公式,如何利用python函数求导数
  14. android计算器退格键,计算器有关问题,如何写退格键
  15. 将Windows10设置为UTF8编码格式
  16. MySQL充电_mysql语法充电
  17. jQuery实现购物车计算价格统计功能
  18. 关于数据存储引擎结构,没有比这篇更详细的
  19. Micro LED - OLED注定过渡
  20. HZ视频配音配字幕工具v1.0配音配字幕、影视视频讲解利器

热门文章

  1. 深入学习smali语法
  2. 56个免费资源网站,总有你想要的。
  3. 计算机ppt制作培训心得,学习ppt制作体会
  4. 开源硬件USB抓包及协议分析工具分享
  5. 飞思卡尔智能车准备篇
  6. 2022自编译最新稳定版newifi3固件
  7. 内蒙古自治区及其盟市行政单位中英文名称对照表
  8. CardView-卡片布局
  9. Java widget xui_XUI使用总结
  10. CCF-CSP历年真题大全附题解(202209已更)