91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker 教程:如何將Helix QAC作為容器創(chuàng)建并運行

北匯信息POLELINK ? 2022-10-31 09:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在此 Docker 教程中,你將學習如何創(chuàng)建Helix QAC并將其作為容器化鏡像運行。

Docker的基本定義是一種開源和流行的操作系統(tǒng)級虛擬化(通常稱為“容器化”)技術(shù),它是輕量級的,可移植的,并且主要在Linux和Windows上運行。Docker使使用容器創(chuàng)建、部署和運行應用程序變得更加容易。

從根本上說,容器只是一個正在運行的進程,并應用了一些附加的封裝功能。借助容器,開發(fā)人員(和DevOps管理員)可以將應用程序與運行應用程序所需的一切(包括代碼、運行時、庫、配置的環(huán)境變量和配置文件)打包在一起,并將其全部作為一個包提供。

還值得一提的是,Docker可以立即啟動,并具有用于版本控制和組件可重用的內(nèi)置機制。這些Docker容器可以通過公共Docker中心或私有存儲庫共享,從而使其易于訪問和使用。

以下是 Docker 的一些最顯著的優(yōu)勢:

  • 快速部署:Docker 可以為每個進程創(chuàng)建一個容器,然后可以根據(jù)需要快速啟動和刪除該容器,而無需啟動平臺操作系統(tǒng) (OS)。這將部署過程時間縮短到幾秒鐘 此外,Docker鏡像啟動幾乎是實時響應的。
  • 可移植性:Docker 允許將經(jīng)過測試的容器化應用程序部署到運行Docker的任何其他系統(tǒng),并確保其執(zhí)行方式與您測試時完全相同。Docker鏡像可以與其他團隊共享。
  • 性能:盡管虛擬機 (VM) 是容器的替代方法,但VM具有操作系統(tǒng),而Docker容器則沒有。這意味著容器的占用空間比VM小,創(chuàng)建速度更快,并且啟動和刪除時間更快。
  • 持續(xù)集成效率:Docker 使你能夠構(gòu)建容器鏡像,并在從開發(fā)、測試到部署的每個步驟中使用它。此外,您還可以分離不相關(guān)的步驟并且并行地運行它們,從而縮短從生成階段到生產(chǎn)部署階段所需的時間。這減少了設置環(huán)境和調(diào)試特定于環(huán)境的問題的時間,使它們更可靠,更易于維護。

但是,Docker 存在一些限制,盡管它們對Docker靜態(tài)分析器的設置的影響很小甚至為零,但了解這些限制對您來說仍然很重要。

  • Docker 不能替代虛擬機:許多在 VM 中運行的應用都可以移動到容器中,但這并不意味著它們都可以或應該移動到容器中。例如:具有嚴格法規(guī)要求的行業(yè)可能無法將容器交換為VM,因為VM比容器提供更多的隔離。
  • 容器中的數(shù)據(jù):有時容器確實會出現(xiàn)故障,在這種情況下,它需要備份和恢復策略。雖然有幾種解決方案,但沒有一個是自動化的或者尚不可擴展的。另一個限制是,除非您在容器關(guān)閉之前先將其保存在某個位置,否則當它關(guān)閉時,其中的所有數(shù)據(jù)都會永遠消失。
  • 跨平臺兼容性:如果應用程序被設計為在特定平臺(如 Windows OS 平臺或Linux)上的Docker容器中運行,這是一個主要問題,因為它無法在任何其他平臺上運行。但是,虛擬機不受此限制的約束,因此該限制使 Docker 對一些由Windows和Linux服務器組成的高度異構(gòu)環(huán)境的吸引力降低。
  • 使用圖形界面運行應用程序:通常,Docker 設計用于托管在命令行上運行的應用程序。雖然我們有幾種方法(如使用X11轉(zhuǎn)發(fā)或MobaXterm)可以在 Docker 容器內(nèi)運行圖形界面,但這些過程很笨拙。因此,我們可以說Docker對于需要豐富接口的應用程序來說不是一個好的解決方案。

為了幫助將靜態(tài)分析工具設置為 Docker 并解決這些限制,我將把設置分解為三個簡單的部分。

第一部分:準備Docker引擎

  1. 從此站點下載并安裝適用于您選擇的操作系統(tǒng) (OS) 平臺的Docker引擎:https://docs.docker.com/engine/install
  2. 要驗證 Docker 引擎是否已正確安裝,請運行名為“hello-world”的示例Docker鏡像。使用以下命令示例:
  • $ sudo docker run hello-world
  • 該命令將下載一個簡單的“hello-world”測試Docker鏡像,并在容器中運行它。因此,當容器運行時,它會打印消息并退出。

我們的 Docker 容器教程的下一部分的目標是將Docker容器設置為作為Helix 靜態(tài)代碼分析工具運行。有幾種方法可以配置 Docker 鏡像以支持不同的編碼合規(guī)性模塊,例如MISRA、AUTOSARCWE、CERT和靜態(tài)代碼掃描工具等。

但是,在本教程中,我將僅演示如何使用一些重要組件構(gòu)建特定的 Docker 鏡像,我們將在Docker容器中將這些組件用作Helix QAC工具 (DaaQT)。

此外,我將討論在運行分析掃描工具時如何處理項目數(shù)據(jù)配置的持久性,以便您可以將Helix QAC項目規(guī)范和項目支持配置文件存儲在docker容器之外,例如prqa項目文件夾和pqraproject.xml.支持的文件。

即使 Docker 容器執(zhí)行完成并關(guān)閉,對這些文件所做的任何更改都將保持不變。從docker執(zhí)行上的生成到生成的任何生成腳本更改都將輸出到主機上映射的外部項目文件夾,并保持持久性。

第 II 部分:創(chuàng)建、生成和運行

首先,讓我們確定我選擇用于構(gòu)建 docker 鏡像的一些組件及其基本說明。

  • Helix QAC-2022.2 (C/C++靜態(tài)分析解析器
  • ASCM-3.3.0(AYTOSARC++14 編碼合規(guī)性)
  • M3CM-3.3.0 (MISRAC 2012 編碼合規(guī)性)
  • MCPP-2.3.0(MISRAC++ 2008 編碼合規(guī)性)
  • CERTCCM-2.3.0(對C的安全編碼標準支持)
  • CERTCCPCM-2.3.0(支持 CPP 的安全編碼標準)

接下來,下載您試用(或已購買)的Helix QAC解析器工具和編碼合規(guī)性模塊,并將這些安裝文件放在主機上的已知文件夾位置。

  • 在我的示例中,將有六個文件(一個解析器工具文件和五個編碼合規(guī)性模塊)。

接下來,創(chuàng)建一個docker構(gòu)建腳本文件。例如,我將文件命名為“qacDockerfile”,沒有文件擴展名(默認名稱為“dockerfile”)。docker引擎將使用此文件創(chuàng)建docker鏡像?;旧?,它有一個命令列表,可以發(fā)送給docker引擎,以自上而下的順序執(zhí)行它們。。

然后將這些文件(包括qacDockerfile)放在DaaQT文件夾中。這些是生成此docker鏡像所需的唯一文件。另外,請注意,我已經(jīng)將它們放在“vDockerBuilds/DaaQT”文件夾下。

以下是“qac文檔”腳本文件的內(nèi)容以及一些說明。

poYBAGNcjLeAG6ZkAAFUV0h0ga4843.png

  • 第 1 行是使用Ubuntu 22.04作為基本鏡像開始的。
  • 第 4 行至第7行使Ubuntu操作系統(tǒng)保持最新狀態(tài),并允許時區(qū)設置。
  • 第 10 行是可選的,但建議添加這些有用的工具,因為Ubuntu基礎鏡像是準系統(tǒng)鏡像。
  • 第 15 行將安裝基本的構(gòu)建工具、gnu編譯器依賴項和任何支持文件。此步驟對于編譯器工具鏈使用需求會有所不同。但是,在我的示例案例中,此圖像將使用gcc/g++ 11編譯器。
  • 第 19 行和第20行指示Docker引擎創(chuàng)建一個名為“QacWorkspace”的工作目錄,所有子順序命令都將使用該目錄。
  • 第 25 行將所有安裝文件的權(quán)限更改為可執(zhí)行文件。
  • 第 28 行以靜默模式安裝Helix-QAC解析器工具并接受許可協(xié)議。
  • 第 31 行至第35行以靜默模式安裝選定的編碼合規(guī)性模塊,并接受許可協(xié)議。
  • 第 38 行正在清理安裝文件,以使docker鏡像盡可能小的占用空間。

接下來,要構(gòu)建 docker 鏡像,我們需要運行以下命令:

$> docker build --pull --no-cache -f qacDockerfile -t qacscatools:22v2.

  • 拉取和無緩存參數(shù)是為了確保它始終獲取最新的 ubuntu 鏡像,并從頭開始構(gòu)建docker鏡像。
  • -f 是qac Docker文件名稱,默認情況下,原始名稱是dockerfile。
  • -t 是格式“名稱:標簽”,因此名稱是“qacscatools”,標簽是“22v2”,以指示使用了哪個Helix-QAC工具版本。
  • 不要忘記末尾的“點”,這表明它是一個本地目錄。

構(gòu)建鏡像過程完成后,您可以看到最后兩行消息,這些消息指示寫入文件并標記鏡像。若要驗證生成是否成功,請運行以下命令以顯示所有可用 Docker 鏡像的列表。

  • $>docker images

pYYBAGNcjLeAHEgvAADufgUifBw315.png

(注意:在上圖中,圖像標記 ID 為bd8c9d08dc4d。)

第三部分:在本地項目上運行 DaaQT

在使用此 docker 容器化鏡像(Docker作為QAC工具– DaaQT)在本地桌面項目上運行任何靜態(tài)代碼分析之前,我們需要確??梢栽L問許可證服務器以獲得使用該工具的權(quán)限。

在我的示例中,我將使用外部遠程 Reprise 許可證管理服務器來請求要使用的許可證。

首先,我們需要創(chuàng)建一個本地項目運行腳本,該腳本知道在何處以及如何訪問遠程 Reprise 許可證服務器。此項目運行腳本還必須知道Helix QAC Dashboard服務器所在的位置,以便在分析運行完成后上載項目診斷消息結(jié)果。

讓我們回顧一下名為“runQACSCA.sh”的腳本文件及其內(nèi)容。我將逐步提供一些關(guān)于它的作用的解釋。

poYBAGNcjLeALLVOAAFLg9ieNaU012.png

  • 第 3 行是對桌面計算機上項目文件夾名稱的引用。
  • 第 7 行是Helix QAC Dashboard服務器上的項目持有者的名稱,用于上載診斷消息和項目信息。
    (注意:第 8 行可用于與本地文件夾名稱匹配。)
  • 第 9 行到第11行是有關(guān)Helix QAC Dashboard服務器的信息,例如URL地址(或FQDN)、服務器端口和許可證服務器端口。
  • 第 14 行是本地桌面項目工作區(qū)名稱“服務器URL地址”(或FQDN)、服務器端口和“許可證服務器端口”。
  • 第 15 行和第16行引用了Helix QAC解析器工具所在的內(nèi)部docker鏡像,以及映射項目工作區(qū)位置。
  • 第 19 行用于使Docker與許可證服務器通信,以請求工具許可證以供使用。
  • 第 25 行將Docker鏡像設置為映射的項目工作區(qū)所在的正確入口點。
  • 第 28 行到第29行是選擇要用于項目的規(guī)則配置文件之一。這些默認文件名是為特定規(guī)則組配置標識的。您可以通過合并任何一個或多個規(guī)則配置文件來創(chuàng)建自己的客戶RCF文件,但是,自定義RCF文件需要在Helix QAC桌面GUI應用程序中完成,然后才能使用。此外,新的自定義名稱需要與默認文件名不同。
  • 第 34 行和第35行用于映射到要使用的編譯器工具鏈。對于我的例子,我已經(jīng)映射到使用任何一個GNU C/CPP 11.2版本。
  • 第 38 行是創(chuàng)建PRQA項目配置并設置要求項目配置。
  • 第41行允許Helix QAC監(jiān)控和跟蹤如何使用其命令在本地構(gòu)建項目的方式。
  • 如果項目需要執(zhí)行一些關(guān)系跨模塊分析 (RCMA) 和/或多線程分析 (MTA),則通常使用第44行和第45行。
  • 第 47 行至第49行是選擇一個編碼合規(guī)性模塊,用于滿足您的編碼合規(guī)性需求。請確保此設置與第28行到第31行的RCF設置匹配。
  • 第 52 行是使用上述所有配置和設置參數(shù)對項目執(zhí)行靜態(tài)代碼分析。
  • 第55行是將項目分析掃描結(jié)果上傳到Helix QACDashboard服務器,并將其放在項目支架中。上載的信息是包含診斷消息和項目配置設置的源代碼文件。

運行以下 docker 命令,這些命令會將本地項目卷映射到docker項目卷,以便保留分析數(shù)據(jù)文件。請密切注意ENTRYPOINT參數(shù),其中腳本文件“runQACSCA.sh”將從項目根文件夾執(zhí)行。

以下是帶有一些解釋的Docker命令:

  • docker run --rm -it -v ~/ProjectsSandbox/MyCppCodeQac:/QacWorkspace/MyCppCodeQac--entrypoint=/QacWorkspace/MyCppCodeQac/runQACSCA.sh qacscatools:22v2“run”,就是執(zhí)行。
  • “-it”以交互方式運行Docker(所以你會得到一個帶有STDIN的偽TTY)。
  • “--rm”使Docker在容器退出時自動將其刪除。
  • “-v”表示卷映射本地主機卷:DockerVolume。
  • “--entrypoint”表示登錄時從哪里開始,命令行開始運行帶有說明內(nèi)容的位置/file_name.sh。

您還可以使用 shell 腳本來運行它,而不必記住在命令行上鍵入所有這些參數(shù)。除了不必記住所有這些細節(jié)之外,這還允許我們對腳本文件進行最小的更改,以適應其他類似的項目。

對于我的示例,我創(chuàng)建了一個名為“runDaaQT.sh”的shell腳本。

pYYBAGNcjLeAE2Q8AADaAM2EIso717.png

顯示 docker 命令行用法的屏幕截圖。

pYYBAGNcjLeAOlV1AAFRbfFzBB4066.png

顯示 shell 腳本用法的屏幕截圖。

poYBAGNcjLiAZpSiAAGK6m0TMuM737.png

(可選)還可以為 CMakeNinja 項目運行此Docker容器,它的命令行與之前演示的項目類似。此項目使用 CMake 和Ninja命令行構(gòu)建系統(tǒng)。

要使用類似的命令行或 shell 腳本文件,您需要在命令行中對正確項目卷 (CMakeNinja) 名稱的命令語法進行一些編輯,如下所示:

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

pYYBAGNcjLiATXOMAANFyGEIUiY926.png

CMakeNinja項目的命令行用法截圖。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    531

    瀏覽量

    22965
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    532

    瀏覽量

    14243
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Docker容器網(wǎng)絡模式全解析

    容器網(wǎng)絡是Docker使用中最容易出問題的部分。容器之間怎么通信、容器怎么訪問外網(wǎng)、外部怎么訪問容器內(nèi)的服務——這三個問題搞不清楚,排查網(wǎng)絡
    的頭像 發(fā)表于 02-26 16:39 ?235次閱讀

    如何在開發(fā)板上安裝運行docker

      1. 鏡像(Image):鏡像是一個只讀模板,包含了運行容器所需的所有文件和設置??梢园阉斫獬梢粋€類的模板,通過它可以創(chuàng)建容器實例。
    的頭像 發(fā)表于 01-30 17:51 ?2746次閱讀
    如何在開發(fā)板上安裝<b class='flag-5'>并</b><b class='flag-5'>運行</b><b class='flag-5'>docker</b>

    Perforce QAC 2025.4 的新特性

    Perforce QAC 2025.4 提供了一個新的最小化安裝包,以簡化 CI/CD 環(huán)境的部署,包含分析改進,例如擴展了針對 Windows API 的動態(tài)內(nèi)存分析。Visual Studio
    的頭像 發(fā)表于 12-30 13:50 ?506次閱讀
    Perforce <b class='flag-5'>QAC</b> 2025.4 的新特性

    創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—Docker容器部署方法說明

    ,鏡像下載與容器運行(含單個 / 多個容器操作),還提及磁盤占用資源查看方法,適配 Debian 11 等環(huán)境,為評估板 Docker 應用部署提供完整指導。
    的頭像 發(fā)表于 10-22 17:21 ?725次閱讀
    創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法說明

    深入剖析Docker全鏈路安全防護策略

    在云原生時代,Docker容器安全已成為運維工程師必須面對的核心挑戰(zhàn)。本文將從實戰(zhàn)角度深入剖析Docker全鏈路安全防護策略,涵蓋鏡像構(gòu)建、容器運行
    的頭像 發(fā)表于 08-18 11:17 ?1037次閱讀

    國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—Docker容器部署方法說明

    本指導文檔主要演示Docker容器部署的方法,基于Docker運行led_flash例程。
    的頭像 發(fā)表于 08-06 15:55 ?487次閱讀
    國產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開發(fā)板—<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>部署方法說明

    Docker容器安全攻防實戰(zhàn)案例

    在云原生時代,Docker已成為現(xiàn)代應用部署的基石。然而,容器化帶來便利的同時,也引入了新的安全挑戰(zhàn)。作為一名在生產(chǎn)環(huán)境中管理過數(shù)千個容器的運維工程師,我
    的頭像 發(fā)表于 08-05 09:52 ?1330次閱讀

    干貨分享 | RK3588 Ubuntu系統(tǒng)Docker容器使用指南

    前言:在瑞芯微RK3588高性能AIoT平臺上運行Ubuntu系統(tǒng)時,Docker容器技術(shù)能極大提升開發(fā)部署效率。通過輕量級虛擬化實現(xiàn)環(huán)境隔離與快速遷移,本文將從零開始詳解RK3588平臺
    的頭像 發(fā)表于 06-27 12:01 ?3856次閱讀
    干貨分享 | RK3588 Ubuntu系統(tǒng)<b class='flag-5'>Docker</b><b class='flag-5'>容器</b>使用指南

    如何使用Docker部署大模型

    隨著深度學習和大模型的快速發(fā)展,如何高效地部署這些模型成為了一個重要的挑戰(zhàn)。Docker 作為一種輕量級的容器化技術(shù),能夠模型及其依賴環(huán)境打包成一個可移植的
    的頭像 發(fā)表于 05-24 16:39 ?1113次閱讀

    Helix QAC 2025.1 重磅發(fā)布!MISRA C:2025? 100%覆蓋

    Helix QAC 2025.1新增功能 Helix QAC 2025.1實現(xiàn)了對新版MISRA C:2025?標準的 100% 覆蓋,并提供對應的合規(guī)模塊。此版本還擴展了對 CERT
    的頭像 發(fā)表于 05-13 16:48 ?1459次閱讀
    <b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b> 2025.1 重磅發(fā)布!MISRA C:2025? 100%覆蓋

    Docker Compose的常用命令

    大家好,今天給大家分享Docker Compose的常用命令,以及docker-compose文件的屬性。Docker Compose 是一個用于定義和運行
    的頭像 發(fā)表于 04-30 13:40 ?1198次閱讀

    Docker常用命令大全

    Docker 是一種開源的應用容器引擎,廣泛應用于開發(fā)、部署和運行分布式應用。掌握 Docker 常用命令對于開發(fā)人員和運維人員來說非常重要。本文將為大家整理常用的
    的頭像 發(fā)表于 04-22 12:47 ?859次閱讀

    【技術(shù)案例】Android in Docker

    Docker介紹Docker是一個開源的容器化平臺,用于打包、分發(fā)和運行應用程序。它通過應用及其所有依賴打包到獨立的
    的頭像 發(fā)表于 04-02 16:33 ?1756次閱讀
    【技術(shù)案例】Android in <b class='flag-5'>Docker</b>

    Perforce品牌及產(chǎn)品名更新:涵蓋版本控制Perforce P4(原Helix Core)、靜態(tài)代碼分析Perforce QAC(原Helix QAC)等

    Perforce推出全新P4平臺及P4 One客戶端!從廣為人知的“P4”到Helix Core到Perforce P4,此次品牌重塑是一次初心回歸,也是對開發(fā)者和數(shù)字創(chuàng)作團隊需求的深度回應。一起來了解更多吧~
    的頭像 發(fā)表于 03-28 15:04 ?1424次閱讀
    Perforce品牌及產(chǎn)品名更新:涵蓋版本控制Perforce P4(原<b class='flag-5'>Helix</b> Core)、靜態(tài)代碼分析Perforce <b class='flag-5'>QAC</b>(原<b class='flag-5'>Helix</b> <b class='flag-5'>QAC</b>)等

    基于Docker鏡像逆向生成Dockerfile

    在本文中, 我們通過理解Docker鏡像如何存儲數(shù)據(jù), 以及如何使用工具查看鏡像方方面面的信息來逆向工程一個Docker鏡像; 以及如何使用Python的Docker API來構(gòu)建一
    的頭像 發(fā)表于 03-10 09:45 ?1546次閱讀
    基于<b class='flag-5'>Docker</b>鏡像逆向生成Dockerfile