TSIA037.2-2023工業(yè)軟件容器鏡像規(guī)范_第1頁
TSIA037.2-2023工業(yè)軟件容器鏡像規(guī)范_第2頁
TSIA037.2-2023工業(yè)軟件容器鏡像規(guī)范_第3頁
TSIA037.2-2023工業(yè)軟件容器鏡像規(guī)范_第4頁
TSIA037.2-2023工業(yè)軟件容器鏡像規(guī)范_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ICS35.020

T/SIA

中國軟件行業(yè)協(xié)會團體標(biāo)準

T/SIA037.2—2023

工業(yè)軟件容器鏡像規(guī)范

IndustrialSoftwareContainerImageSpecifications

學(xué)兔兔標(biāo)準下載

2023-10-20發(fā)布2023-10-20實施

中國軟件行業(yè)協(xié)會發(fā)布

T/SIA037.2—2023

工業(yè)軟件容器鏡像規(guī)范

1范圍

本文件規(guī)定了工業(yè)軟件領(lǐng)域容器鏡像的內(nèi)容描述符、鏡像布局、清單、索引和配置等內(nèi)容,給出了

工業(yè)軟件領(lǐng)域容器鏡像的設(shè)計考量,確立了工業(yè)軟件容器鏡像的構(gòu)建過程。

本文件適用于開展工業(yè)軟件容器鏡像設(shè)計與構(gòu)建的工作。

2規(guī)范性引用文件

下列文件中的內(nèi)容通過文中的規(guī)范性引用而構(gòu)成本文件必不可少的條款。其中,注日期的引用文件,

僅該日期對應(yīng)的版本適用于本文件;不注日期的引用文件,其最新版本(包括所有的修改單)適用于本

文件。

GB/T11457-2006信息技術(shù)軟件工程術(shù)語

ISO/IEC2382-2015信息技術(shù)詞匯

3術(shù)語和定義

GB/T11457-2006、ISO/IEC2382-2015中確立的以及下列術(shù)語和定義適用于本文件。

3.1

容器鏡像containerimage

一種在容器化環(huán)境中用于打包和分發(fā)工業(yè)軟件應(yīng)用的標(biāo)準化結(jié)構(gòu)。

注:改編自O(shè)CI(2021)《OCIImageFormatSpecification(image-spec)》,OCI標(biāo)準中定義了容器鏡像的結(jié)構(gòu)和

元數(shù)據(jù)格式。

3.2

制品artifact

一種能夠通過工業(yè)軟件容器鏡像分發(fā)規(guī)范推送和拉取的內(nèi)容。

注:改編自O(shè)CI(2021)《OCIDistributionSpecification(distribution-spec)》,標(biāo)準中定義了制品內(nèi)容。

3.3

軟件捆綁包bundle

一種包含容器所需文件和配置的目錄或壓縮文件,可用于創(chuàng)建容器鏡像。

注:改編自O(shè)CI(2021)《OCIRuntimeSpecification(runtime-spec)》,標(biāo)準中定義了bundle。

學(xué)兔兔3.4標(biāo)準下載

摘要digest

一種應(yīng)用哈希函數(shù)對容器鏡像的內(nèi)容進行計算而得到的唯一標(biāo)識符,可以用來驗證容器鏡像的完

整性和一致性,確保在容器鏡像的分發(fā)和使用過程中沒有被篡改或損壞。

3.5

1

學(xué)兔兔標(biāo)準下載

T/SIA037.2—2023

鏡像索引imageindex

一種在鏡像服務(wù)器上建立的索引,用于記錄鏡像服務(wù)器上存儲的文件信息,以便用戶可以快速地找

到所需的文件。

3.6

鏡像布局imagelayout

一種描述容器鏡像中各個組成部分的存儲方式和目錄結(jié)構(gòu)的一種方式。

3.7

鏡像清單imagemanifest

一個描述容器鏡像內(nèi)容和元數(shù)據(jù)的文件,提供了關(guān)于鏡像的詳細信息,包括鏡像的層次結(jié)構(gòu)、配置

信息和元數(shù)據(jù)等。

3.8

媒體類型mediatype

一種用于標(biāo)識容器鏡像中的各個組成部分的數(shù)據(jù)格式。

4縮略語

下列縮略語適用于本文件。

ABI:應(yīng)用程序二進制接口(ApplicationBinaryInterface)

ARM:高級精簡指令集計算機(AdvancedRISCMachine)

BLOB:二進制大對象(BinaryLargeObject)

CPU:中央處理器(CentralProcessingUnit)

EBNF:擴展巴克斯-瑙爾范式(ExtendedBackus-NaurForm)

FAT:文件分配表(FileAllocationTable)

FTP:文件傳輸協(xié)議(FileTransferProtocol)

HTTP:超文本傳輸協(xié)議(HypertextTransferProtocol)

IANA:互聯(lián)網(wǎng)數(shù)字分配機構(gòu)(TheInternetAssignedNumbersAuthority)

ISA:指令集體系結(jié)構(gòu)(InstructionSetArchitecture)

JSON:JavaScript對象表示法(JavaScriptObjectNotation)

NFS:網(wǎng)絡(luò)文件系統(tǒng)(NetworkFileSystem)

SBOM:軟件材料清單(SoftwareBillofMaterials)

URI:統(tǒng)一資源標(biāo)識符(UniformResourceIdentifier)

URL:統(tǒng)一資源定位符(UniformResourceLocator)

5鏡像系統(tǒng)結(jié)構(gòu)

工業(yè)軟件容器與通用容器之間存在一些差異和共性。工業(yè)軟件容器是針對工業(yè)領(lǐng)域的應(yīng)用而設(shè)計

的,而通用容器是廣泛應(yīng)用于各個領(lǐng)域的容器化技術(shù)。學(xué)兔兔標(biāo)準下載

工業(yè)軟件容器與通用容器在安全性要求、實時性要求和硬件設(shè)備支持方面存在差異。由于工業(yè)領(lǐng)域

的應(yīng)用往往涉及關(guān)鍵基礎(chǔ)設(shè)施和敏感數(shù)據(jù),工業(yè)軟件容器通常需要更高的安全性,需要采用更嚴格的安

全措施和認證機制。此外,工業(yè)控制系統(tǒng)對實時性要求較高,因此工業(yè)軟件容器需要滿足實時性要求,

2

T/SIA037.2—2023

并能夠在嚴格的時間限制下提供穩(wěn)定的性能。另外,工業(yè)軟件容器需要與特定的硬件設(shè)備進行交互,因

此設(shè)計上涉及與特定硬件的集成和通信。

然而,工業(yè)軟件容器和通用容器也有一些共性,它們都是基于容器化技術(shù)的。同時,它們都具有輕

量級和可移植性的特點,可以在不同的環(huán)境中快速部署和遷移。另外,工業(yè)軟件容器和通用容器都提供

隔離的運行環(huán)境,使得不同的應(yīng)用程序可以獨立運行,并支持水平擴展,根據(jù)需求動態(tài)增加或減少容器

實例。

工業(yè)軟件容器鏡像規(guī)范包含兩個主要部分,旨在定義和規(guī)范工業(yè)軟件容器鏡像的結(jié)構(gòu)和設(shè)計考量。

在工業(yè)軟件容器鏡像部分主要關(guān)注內(nèi)容描述符、鏡像布局、鏡像清單、鏡像索引、鏡像配置和鏡像

注解等關(guān)鍵要素。通過定義這些要素的結(jié)構(gòu)、格式和使用方式,可以確保工業(yè)軟件容器鏡像的一致性、

可移植性和互操作性。內(nèi)容描述符用于描述容器鏡像的關(guān)鍵信息和特性,鏡像布局規(guī)定了鏡像內(nèi)部文件

和目錄的組織結(jié)構(gòu),鏡像清單記錄了鏡像中包含的各個層和文件的詳細信息,鏡像索引用于管理和檢索

多個鏡像的關(guān)系,鏡像配置規(guī)范了容器的運行時行為和環(huán)境配置,而鏡像注解提供了容器的元數(shù)據(jù)信息

和描述。

在工業(yè)軟件容器鏡像設(shè)計考量部分,關(guān)注的是可擴展性、規(guī)范化、JSON、EBNF、表達式和優(yōu)先級等

方面。這些設(shè)計考量旨在提供靈活性、標(biāo)準化和可靠性,以滿足工業(yè)軟件容器的特定需求和行業(yè)標(biāo)準。

鼓勵采用可擴展的設(shè)計模式,以適應(yīng)不斷變化的工業(yè)環(huán)境和應(yīng)用需求。同時,推崇規(guī)范化的實踐,以確

保容器鏡像的一致性和可維護性。使用JSON(JavaScriptObjectNotation)作為數(shù)據(jù)交換格式和配

置語言,以及EBNF(ExtendedBackus-NaurForm)作為語法規(guī)范化的表示方法,能夠提供清晰、易讀

和可擴展的表達能力。此外,強調(diào)對表達式和優(yōu)先級的正確理解和應(yīng)用,以確保容器鏡像的配置和行為

符合預(yù)期。

通過遵循工業(yè)軟件容器鏡像規(guī)范,工業(yè)軟件開發(fā)者和運維人員能夠創(chuàng)建、交付和管理一致性和高質(zhì)

量的工業(yè)軟件容器鏡像。該標(biāo)準結(jié)構(gòu)的定義和規(guī)范化,有助于推動工業(yè)軟件容器技術(shù)的發(fā)展,促進工業(yè)

應(yīng)用的容器化和數(shù)字化轉(zhuǎn)型。具體的結(jié)構(gòu)如圖1所示:

工業(yè)軟件容器

鏡像規(guī)范

組成要素設(shè)計考量

內(nèi)

鏡鏡鏡鏡鏡可

容規(guī)JE表優(yōu)

像像像像像擴

描范SB達先

布清索配注展ON

述化式級

局單引置解性NF

學(xué)兔兔標(biāo)準下載

圖1工業(yè)軟件容器鏡像系統(tǒng)結(jié)構(gòu)

6組成要素

6.1內(nèi)容描述符

3

學(xué)兔兔標(biāo)準下載

T/SIA037.2—2023

6.1.1描述符組成

內(nèi)容描述符(或簡稱為描述符)描述了目標(biāo)內(nèi)容的排列。一個內(nèi)容描述符包括內(nèi)容類型、一個內(nèi)容

摘要(Digest)和原始內(nèi)容的字節(jié)大小(Size)。描述符應(yīng)當(dāng)嵌入到其他格式中以安全地引用外部內(nèi)容。

其他格式應(yīng)該使用描述符來安全地引用外部內(nèi)容。

在工業(yè)軟件容器鏡像規(guī)范中,內(nèi)容描述符是用于唯一標(biāo)識和描述工業(yè)軟件容器鏡像中各個組成部

分的數(shù)據(jù)結(jié)構(gòu)。內(nèi)容描述符由兩個關(guān)鍵組件組成:算法標(biāo)識符和摘要。

6.1.2算法標(biāo)識符

算法標(biāo)識符是一個字符串,用于表示用于計算摘要的哈希算法。常見的算法標(biāo)識符包括SHA-256、

SHA-1、MD5等。它指定了用于生成摘要的具體哈希算法。

描述符由一組封裝在鍵值字段中的屬性組成。表1規(guī)定了構(gòu)成描述符的主要屬性:

表1描述符主要屬性

屬性名說明是否為必選屬性補充說明

mediaTypestring包含引用內(nèi)容是

的媒介類型

digeststring目標(biāo)內(nèi)容的摘是當(dāng)通過來源不受信任時,應(yīng)根據(jù)此

要摘要驗證檢索到的內(nèi)容。

sizeint64原始內(nèi)容的大是存在此屬性,以便客戶端在處理之

?。ㄒ宰止?jié)為前具有預(yù)期的內(nèi)容大小。如果檢索

單位)到的內(nèi)容的長度與指定的長度不匹

配,則不應(yīng)信任該內(nèi)容。

urlsarrayofstrings指定或許可從否

中下載此對象

的URI列表

annotationsstring-string此描述符的任否必須使用注釋規(guī)則

map意元數(shù)據(jù)

datastring包含引用內(nèi)容否解碼后的數(shù)據(jù)必須與引用的內(nèi)容相

的嵌入式表示同,并應(yīng)由內(nèi)容使用者根據(jù)

形式digest和size字段進行驗證。

artifactTypestring包含一個描述否當(dāng)描述符引用一個artifactmanifest

符所指向的制時這個值就是artifactType,當(dāng)描述

品的類型符引用一個imagemanifest時這個

值就是屬性描述符mediaType。

6.1.3學(xué)兔兔摘要標(biāo)準下載

摘要是通過指定的哈希算法對特定數(shù)據(jù)內(nèi)容進行計算生成的唯一標(biāo)識符。摘要可以確保工業(yè)軟件

容器鏡像中各個組成部分的完整性和唯一性。通過對鏡像中的文件或數(shù)據(jù)進行哈希計算,生成的摘要可

以唯一地識別每個組成部分,并確保它們未被篡改。

4

T/SIA037.2—2023

描述符的digest屬性扮演著摘要和內(nèi)容尋址的角色。其通過對字節(jié)進行抗沖突散列來唯一標(biāo)識內(nèi)

容。如果digest可以以安全的方式進行通信,則可以通過重新計算Digest來驗證是否來自不安全來

源的內(nèi)容,確保內(nèi)容未被修改。

digest屬性的值是一個由算法部分和編碼部分組成的字符串。該算法指定用于digest的加密散

列函數(shù)和編碼;編碼部分包含散列函數(shù)的編碼結(jié)果。

digest字符串必須符合以下語法:

digest::=algorithm":"encoded

algorithm::=algorithm-component(algorithm-separatoralgorithm-component)*

algorithm-component::=[a-z0-9]+

algorithm-separator::=[+._-]

encoded::=[a-zA-Z0-9=_-]+

注意:算法對編碼部分的語法施加特定的限制。

表2給出了一些digest字符串例子:

表2digest字符串

Digest算法是否注冊

sha256:6c3c624b58dbbcd3c0dd82b4c53f0SHA-256Yes

4194d1247c6eebdaab7c610cf7d66709b3b

sha512:401b09eab3c013d4ca54922bb802bSHA-512Yes

ec8fd5318192b0a75f201d8b372742...

multihash+base58:QmRZxt2b1FVZPNqd8hsMultihashNo

iykDL3TdBDeTSPX9Kv46HmX4Gx8

sha256+b64u:LCa0a2j_xo_5m0U8HTBBNBNCSHA-256withurlsafeNo

LXBkg7-g-YpeiGJm564base64

如果符合上述語法,實現(xiàn)應(yīng)該允許使用無法識別的算法的digest通過驗證。雖然SHA-256將僅使

用十六進制編碼的digest,但算法中的分隔符和編碼中的字母數(shù)字都包含在內(nèi)以允許擴展。

在計算digest之前,應(yīng)該驗證內(nèi)容的大小以減少哈希沖突空間。應(yīng)該避免在計算hash之前進行

繁重的處理。實現(xiàn)可以使用底層內(nèi)容的規(guī)范化來確保穩(wěn)定的摘要。

Digest計算:

Digest由以下偽代碼計算,其中H是選定的哈希算法,由字符串<alg>標(biāo)識:

letID(C)=Descriptor.digest

letC=<bytes>

letD='<alg>:'+Encode(H(C))

letverified=ID(C)==D

學(xué)兔兔上面,將摘要定義為ID(C),從Descriptor.digest字段中提取。內(nèi)容標(biāo)準下載C是一串字節(jié)。函數(shù)H以

字節(jié)為單位返回C的哈希值,并傳遞給函數(shù)Encode并以算法為前綴以獲得Digest。如果ID(C)等于D,

則驗證結(jié)果為真,確認C是D標(biāo)識的內(nèi)容。驗證后,以下為真:

D==ID(C)=='<alg>:'+Encode(H(C))

通過獨立計算Digest,將Digest確認為摘要。

5

學(xué)兔兔標(biāo)準下載

T/SIA037.2—2023

已注冊的算法:

雖然Digest字符串的算法組件允許使用各種加密算法,但兼容的實現(xiàn)應(yīng)該使用SHA-256。

算法標(biāo)識符和摘要之間存在一種依賴關(guān)系。算法標(biāo)識符指定了用于計算摘要的具體哈希算法,而摘

要則是通過應(yīng)用該算法對數(shù)據(jù)進行計算得到的。算法標(biāo)識符和摘要的組合可以唯一地標(biāo)識工業(yè)軟件容

器鏡像中的各個組成部分,并驗證其完整性和正確性。

表3規(guī)定了目前定義的算法標(biāo)識符:

表3算法標(biāo)識符

算法標(biāo)識符算法

sha256SHA-256

sha512SHA-512

一個可用的算法如果沒有出現(xiàn)在上面的圖標(biāo)當(dāng)中,應(yīng)當(dāng)被提交到本規(guī)范當(dāng)中以注冊。

a)SHA-256

SHA-256是一種抗碰撞散列函數(shù),選擇它是因為它具有普遍性、合理的大小和安全特性。實現(xiàn)上必

須實現(xiàn)SHA-256Digest來驗證描述符。

當(dāng)算法標(biāo)識符為sha256時,編碼部分必須匹配/[a-f0-9]64/。注意,此處禁止使用[A-F]。

b)SHA-512

SHA-512是一種抗碰撞散列函數(shù),在某些CPU上比SHA-256性能更好。實現(xiàn)上實現(xiàn)SHA-512Digest

來驗證描述符。

當(dāng)算法標(biāo)識符為sha512時,編碼部分必須匹配/[a-f0-9]128/。注意,此處禁止使用[A-F]。

6.1.4嵌入內(nèi)容

在很多環(huán)境下,當(dāng)通過網(wǎng)絡(luò)下載內(nèi)容,將描述符解析為其內(nèi)容具有可測量的固定的“往返”延遲成

本。對巨大的二進制對象,固定的成本通常是不重要的,事實上大部分時間會被花費在獲取內(nèi)容上。對

非常小的二進制對象,固定的成本是非常重要的。

實現(xiàn)方式會選擇向描述符中直接嵌入小部分內(nèi)容以避免往返成本。實現(xiàn)當(dāng)中絕對不能在填充數(shù)據(jù)

字段會修改現(xiàn)有摘要的情況下。注冊表絕對不能在上傳的清單中任意填充data字段,因為這會修改這

些清單的摘要。相反,客戶端在上傳清單之前填充data字段,因為注冊表中清單的還沒有摘要。

在決定是否嵌入數(shù)據(jù)時,實現(xiàn)應(yīng)該考慮可移植性,因為眾所周知,一些提供者拒絕接受或解析超過

一定大小的清單。

6.2鏡像布局

6.2.1布局內(nèi)容

工業(yè)軟件容器鏡像布局是工業(yè)軟件容器鏡像內(nèi)容可尋址Blob和位置可尋址引用(refs)的目錄結(jié)

構(gòu)。此布局可能用于各種不同的傳輸機制:存檔格式(示例:tar、zip)、共享文件系統(tǒng)環(huán)境(示例:

nfs學(xué)兔兔)或網(wǎng)絡(luò)文件獲取(示例:http、ftp)。給定鏡像布局和參考,工具可以通過以下方式創(chuàng)建符合工標(biāo)準下載

業(yè)軟件容器鏡像運行規(guī)范的可執(zhí)行文件包:

a)按照索引查找清單,也可能通過鏡像索引查找清單

b)按指定順序應(yīng)用鏡像層文件系統(tǒng)變更集

鏡像布局如下:

6

T/SIA037.2—2023

a)blobs目錄

1)包含內(nèi)容可尋址的blob

2)一個blob沒有架構(gòu),應(yīng)當(dāng)被認為是不透明的

3)目錄必須存在并且可以為空

b)layout文件

1)必須存在

2)內(nèi)容必須是JSON對象

3)必須包含imageLayoutVersion字段

4)可能包含其他字段

c)index.json文件

1)必須存在

2)必須是一個鏡像索引JSON對象

6.2.2二進制大對象

a)blobs子目錄中的對象名稱由每個哈希算法的目錄組成,其子目錄將包含實際內(nèi)容。

b)blobs/<alg>/<encoded>的內(nèi)容必須匹配摘要<alg>:<encoded>(每個描述符引用)。

c)<alg>和<encoded>的條目名稱的字符集必須匹配描述符中描述的相應(yīng)語法元素。

d)blobs目錄可能包含未被任何refs引用的blob。

e)blobs目錄可能缺少引用的blob,在這種情況下,缺少的blob應(yīng)該由外部blob存儲來完

成。

6.2.3布局文件

此文件可以用作開放容器鏡像布局基礎(chǔ)的標(biāo)記,并提供正在使用的鏡像布局版本。在對布局進行更

改時,imageLayoutVersion值將與工業(yè)軟件容器鏡像規(guī)范版本保持一致,并將固定給定版本,直到需

要對鏡像布局進行更改。

6.2.4索引文件

這個必要文件是鏡像布局的引用和描述符的入口點。鏡像索引是多描述符入口點。

該索引提供了一個已建立的路徑(/index.json)以具有鏡像布局的入口點并發(fā)現(xiàn)輔助描述符。

a)該規(guī)范的未來版本可能使用不同的媒介類型(即新的版本的格式)。

b)遇到的未知媒介類型應(yīng)當(dāng)被安全地忽略。

6.3鏡像清單

6.3.1鏡像清單

鏡像清單有三個主要目標(biāo)。第一個目標(biāo)是內(nèi)容可尋址鏡像,通過支持鏡像模型,該模型鏡像的配置

可以被哈希以生成鏡像及其組件的唯一ID。第二個目標(biāo)是通過“fatmanifest”允許多架構(gòu)鏡像,該“fat

學(xué)兔兔manifest”引用特定平臺版本的鏡像清單。在工業(yè)軟件容器鏡像中,這被定義在鏡像索引。第三個目標(biāo)標(biāo)準下載

是可轉(zhuǎn)換為工業(yè)軟件容器鏡像運行時規(guī)范。不同于鏡像索引,鏡像清單包含關(guān)于一組鏡像的信息,這些

索引可跨越各種體系結(jié)構(gòu)和操作系統(tǒng)。鏡像清單提供配置和一組層級對于單個容器鏡像用于一個特定

的架構(gòu)和操作系統(tǒng)。

7

學(xué)兔兔標(biāo)準下載

T/SIA037.2—2023

6.3.2鏡像清單屬性描述

a)schemaVersionint

此屬性為必選屬性,需要指定鏡像清單架構(gòu)版本。對于這個版本的規(guī)范,這個字段的值是2,

確保向后兼容。該字段的值不會改變。

b)mediaTypestring

此屬性應(yīng)當(dāng)被使用并且與本規(guī)范的早期版本和其他類似的外部格式保持兼容。

c)subjectdescriptor

此屬性是可選的用于指定另一個描述符清單。

d)annotationsstring-stringmap

此屬性是可選擇的包含鏡像清單的任意元數(shù)據(jù)。

6.3.3制品清單

制品清單規(guī)范的目標(biāo)是定義內(nèi)容可尋址的制品,以便將它們與旁邊的容器鏡像一起存儲在注冊表

中。與工業(yè)軟件容器鏡像一樣,工業(yè)軟件容器鏡像制品可以由其清單的散列引用。與工業(yè)軟件容器鏡像

不同,工業(yè)軟件容器鏡像制品不被任何容器運行時使用。

與容器鏡像一起存儲的制品的例子有軟件材料清單(SBOM)、數(shù)字簽名、來源數(shù)據(jù)、供應(yīng)鏈認證、掃

描結(jié)果和Helm圖表。

制品清單屬性描述

a)mediaTypestring

必須使用該屬性。

b)artifactTypestring

應(yīng)該使用此屬性并包含所引用制品的mediaType。

c)layersarrayofobjects

這個可選屬性是一個對象數(shù)組,數(shù)組中的每一項都必須是一個描述符。每個描述符表示任何IANA

媒介類型的制品。列表可以為某些制品類型(如掃描結(jié)果)排序。

d)subjectdescriptor

此可選屬性指定另一個清單的描述符。

e)annotationsstring-stringmap

此可選屬性包含制品清單的額外元數(shù)據(jù)。

6.4鏡像索引

6.4.1鏡像索引屬性

鏡像索引是一種更高級的鏡像清單,它指向特定的鏡像清單,適用于一個或多個平臺。雖然鏡像索

引的使用對于使用者來說是可選的,但是學(xué)會使用索引可以有效降低檢索鏡像的時間。下面是其中的屬

性字段:學(xué)兔兔標(biāo)準下載

a)schemaVersionint

此屬性為必選屬性,它指定鏡像清單架構(gòu)版本。對于這個版本的規(guī)范,這必須是2以確保與舊版本

的向后兼容。該字段的值不會改變。

b)mediaTypestring

8

T/SIA037.2—2023

這個屬性應(yīng)當(dāng)配合兼容性矩陣使用以支持舊版本規(guī)范以及其他類似的外部格式。

c)manifestsarrayofobjects

此屬性為必須屬性,包含特定平臺的清單列表。雖然這個屬性必須存在,但數(shù)組的大小可以為零。

清單中的每個對象都包含一組描述符屬性,并具有以下附加屬性和限制:

d)annotationsstring-stringmap

此OPTIONAL屬性包含鏡像索引的任意元數(shù)據(jù)。此可選屬性必須使用注釋規(guī)則。

6.4.2平臺變體

表4規(guī)定了CPU變體,如果CPU變體不存在于表中,應(yīng)該提交到本規(guī)范中進行標(biāo)準化。

表4CPU變體

ISA/ABI架構(gòu)變體

ARM32-bitv6armv6

ARM32-bitv7armv7

ARM32-bitv8armv8

ARM64-bitv8arm64v8

6.5鏡像配置

工業(yè)軟件容器鏡像是由根文件系統(tǒng)更改的有序集合以及容器運行時中會使用的相應(yīng)執(zhí)行參數(shù)組成

的。在工業(yè)軟件容器鏡像規(guī)范中,配置是指對工業(yè)軟件容器鏡像的各項參數(shù)、設(shè)置和環(huán)境進行定義和調(diào)

整的過程。配置在工業(yè)軟件容器鏡像中起著關(guān)鍵的作用。它決定了容器在部署和運行時的行為和特性,

包括應(yīng)用程序的行為、依賴關(guān)系、運行時環(huán)境的設(shè)置等。通過合理的配置,可以實現(xiàn)容器鏡像的可定制

性、靈活性和可擴展性,使其適應(yīng)不同的應(yīng)用場景和需求。配置的目的是為了滿足特定的需求和要求。

通過配置,可以實現(xiàn)工業(yè)軟件容器鏡像的定制化部署,根據(jù)不同的業(yè)務(wù)需求和環(huán)境要求進行靈活的設(shè)置

和調(diào)整。下文規(guī)定鏡像配置屬性字段:

a)createdstring,OPTIONAL

創(chuàng)建鏡像的日期時間。

b)authorstring,OPTIONAL

提供創(chuàng)建并負責(zé)維護鏡像的個人或?qū)嶓w的姓名和/或電子郵件地址。

c)osstring,REQUIRED

鏡像運行的操作系統(tǒng)的名稱。

d)os.versionstring,OPTIONAL

此OPTIONAL屬性指定被引用的blob目標(biāo)的操作系統(tǒng)版本。

e)os.featuresarrayofstrings,OPTIONAL

學(xué)兔兔這個OPTIONAL屬性指定了一個字符串?dāng)?shù)組,每個字符串都指定了一個必選的標(biāo)準下載OS特性。

f)variantstring,OPTIONAL

指定CPU架構(gòu)的變體。配置應(yīng)該使用,并且實現(xiàn)應(yīng)該理解平臺變量表中列出的變量值。

g)configobject,OPTIONAL

在使用該鏡像運行容器時應(yīng)作為基礎(chǔ)的執(zhí)行參數(shù)。這個字段可以是null,在這種情況下,任何執(zhí)

行參數(shù)都應(yīng)該在創(chuàng)建容器時指定。

9

學(xué)兔兔標(biāo)準下載

T/SIA037.2—2023

1)Userstring,OPTIONAL

用戶名或UID,這是一個平臺特定的結(jié)構(gòu),允許具體控制進程以哪個用戶身份運行。當(dāng)創(chuàng)建容器時

沒有指定該值時,這將作為一個默認值使用。

2)ExposedPortsobject,OPTIONAL

一組要從運行此鏡像的容器中公開的端口。它的鍵可以是以下格式。port/tcp,port/udp,port,

如果沒有指定,默認協(xié)議為tcp。這些值作為默認值,在創(chuàng)建容器時與任何指定的值合并。

3)Envarrayofstrings,OPTIONAL

條目格式為:‘VARNAME=VARVALUE’。這些值作為默認值,在創(chuàng)建容器時與任何指定的值合并。

4)Entrypointarrayofstrings,OPTIONAL

一個參數(shù)列表,用作容器啟動時要執(zhí)行的命令。這些值作為默認值,可以由創(chuàng)建容器時指定的入口

取代。

5)Cmdarrayofstrings,OPTIONAL

容器的entrypoint的默認參數(shù)。這些值作為默認值,可以由創(chuàng)建容器時指定的任何值來代替。如

果沒有指定Entrypoint值,那么Cmd數(shù)組的第一個條目就應(yīng)該被解釋為要運行的可執(zhí)行文件。

6)Volumesobject,OPTIONAL

一組描述進程寫入容器實例特定數(shù)據(jù)的目錄。注意:這個JSON結(jié)構(gòu)值是不尋常的,因為它是

map[string]結(jié)構(gòu)的直接JSON序列化,并在JSON中表示為將其鍵映射到一個空對象。

7)WorkingDirstring,OPTIONAL

設(shè)置容器中入口進程的當(dāng)前工作目錄。這個值作為默認值,可以由創(chuàng)建容器時指定的工作目錄代替。

8)Labelsobject,OPTIONAL

該字段包含容器的任意元數(shù)據(jù)。這個屬性必須使用注釋規(guī)則

9)StopSignalstring,OPTIONAL

該字段包含將被發(fā)送到容器中作為退出的系統(tǒng)調(diào)用信號。該信號可以是一個格式為SIGNAME的信

號名稱,示例:SIGKILL或SIGRTMIN+3。

10)Memoryinteger,OPTIONAL

此屬性保留供使用,以保持兼容性。

11)MemorySwapinteger,OPTIONAL

此屬性保留供使用,以保持兼容性。

12)CpuSharesinteger,OPTIONAL

此屬性保留供使用,以保持兼容性。

13)Healthcheckobject,OPTIONAL

此屬性保留供使用,以保持兼容性。

h)rootfsobject,REQUIRED

rootfs鍵引用鏡像所使用的層內(nèi)容地址。

學(xué)兔兔1)typestring,REQUIRED標(biāo)準下載

必須被設(shè)置為layers。如果在驗證或解壓鏡像時遇到一個未知的值,實現(xiàn)必須產(chǎn)生一個錯誤。

2)diff_idsarrayofstrings,REQUIRED

一個層內(nèi)容哈希值(‘DiffIDs’)的數(shù)組,按從頭到尾的順序排列。

i)historyarrayofobjects,OPTIONAL

描述了每個層的歷史。數(shù)組從第一個到最后一個排序。該對象有以下字段。

10

T/SIA037.2—2023

1)createdstring,OPTIONAL

創(chuàng)建的日期時間。

2)authorstring,OPTIONAL

構(gòu)建點的作者。

3)created_bystring,OPTIONAL

創(chuàng)建該層的命令。

4)commentstring,OPTIONAL

創(chuàng)建層時設(shè)置的一個自定義信息。

5)empty_layerboolean,OPTIONAL

這個字段用來標(biāo)記歷史項目是否創(chuàng)建了一個文件系統(tǒng)的差異。如果這個歷史項目不對應(yīng)于rootfs

部分的實際層,它被設(shè)置為true。

ImageJSON結(jié)構(gòu)中的任何額外字段都被認為是特定的實現(xiàn),并且必須被任何無法解釋它們的實現(xiàn)

所忽略。

JSON格式化(空白字符)是可選的,實現(xiàn)可以使用沒有空白字符的緊湊JSON。

6.6鏡像注解

在工業(yè)軟件容器鏡像規(guī)范中,注解是指在容器鏡像中添加額外的元數(shù)據(jù)和說明信息的標(biāo)記。注解通

過鍵值對的形式將相關(guān)信息與容器鏡像關(guān)聯(lián)起來,提供更詳細的描述和解釋。

注解在工業(yè)軟件容器鏡像中具有重要的作用。首先,注解提供了關(guān)于容器鏡像的補充說明和文檔化

信息。通過注解,可以記錄容器鏡像的版本、作者、創(chuàng)建日期、修改歷史等關(guān)鍵信息,幫助用戶了解和

識別容器鏡像的屬性和來源。

其次,注解可以提供與容器鏡像相關(guān)的其他關(guān)鍵信息,像所需的配置、環(huán)境變量、依賴項等。這些

注解可以幫助用戶正確理解和配置容器鏡像,確保容器能夠正常運行并滿足特定的要求。

此外,注解還可以用于實現(xiàn)工業(yè)軟件容器鏡像的元數(shù)據(jù)管理和自動化處理。通過定義一致的注解格

式和命名規(guī)則,可以實現(xiàn)對容器鏡像的自動化處理和管理。示例:可以編寫腳本或工具根據(jù)注解信息進

行容器鏡像的驗證、部署和監(jiān)控。

該規(guī)范的幾個組件,如鏡像和描述符,都具有可選的注釋屬性,其格式是通用的,并在本節(jié)中定義。

此屬性包含任意元數(shù)據(jù)。

a)注釋必須是一個Map,其中Key和Value都必須是字符串。

b)雖然Value必須存在,但它可能是一個空字符串。

c)Key在這個Map中必須是唯一的,最佳做法是Key以名字空間方式命名。

d)Key應(yīng)當(dāng)使用反向域名符號來命名。

e)如果沒有注釋,那么這個屬性必須不存在或為空Map。

學(xué)兔兔標(biāo)準下載

11

學(xué)兔兔標(biāo)準下載

T/SIA037.2—2023

表5給出一部分前綴注解:

表5前綴注解

imageprefixlabel-schemaprefixCompatibilitynotes

createdbuild-date兼容的

urlurl兼容的

sourcevcs-url兼容的

versionversion兼容的

revisionvcs-ref兼容的

vendorvendor兼容的

titlename兼容的

descriptiondescription兼容的

documentationusage兼容的

authors無兼容的

licenses無兼容的

無兼容的

7設(shè)計考量

7.1可擴展性

正在讀取/處理鏡像Manifest或鏡像索引的實現(xiàn)在遇到未知屬性時不得產(chǎn)生錯誤。相反,他們必須

忽略未知屬性。

7.2規(guī)范化

以下明確規(guī)范化的一些要求:

a)工業(yè)軟件容器鏡像是內(nèi)容可尋址的。

b)內(nèi)容可尋址存儲的一個好處是易于重復(fù)數(shù)據(jù)刪除。

c)很多鏡像同時依賴于某一個層,但存儲中只會有一個blob。

d)使用不同的序列化,相同的層將具有不同的Hash,并且如果引用該層的兩個版本,則將有兩

個具有相同語義內(nèi)容的blob。

e)為了實現(xiàn)高效的存儲,對blob的內(nèi)容進行序列化的實現(xiàn)應(yīng)當(dāng)使用規(guī)范的序列化。

f)這增加了不同實現(xiàn)可以將相同語義內(nèi)容推送到存儲而不創(chuàng)建冗余blob的機會。

7.3學(xué)兔兔JSON標(biāo)準下載

JSON內(nèi)容應(yīng)該被序列化為規(guī)范的JSON。在工業(yè)軟件容器鏡像格式規(guī)范媒介類型中,所有以+json

結(jié)尾的類型都包含JSON內(nèi)容。

7.4EBNF

12

T/SIA037.2—2023

對于本規(guī)范中描述的字段格式,使用EBNF的有限子集,類似于XML規(guī)范使用的。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論