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

下載本文檔

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

文檔簡介

ICS35.020

T/SIA

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

T/SIA037.1—2023

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

IndustrialSoftwareContainerImageDistributionSpecification

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

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

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

T/SIA037.1—2023

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

1范圍

本文件規(guī)定了工業(yè)軟件領(lǐng)域容器鏡像分發(fā)的合規(guī)性要求,給出了工業(yè)軟件領(lǐng)域容器鏡像分發(fā)的工

作流類別種類和操作,確立了不同容器鏡像版本兼容性的支持方案。

本文件適用于開展不同類型工業(yè)軟件容器鏡像分發(fā)的工作。

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)準(zhǔn)化結(jié)構(gòu)。

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

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

3.2

制品artifact

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

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

3.3

描述符descriptor

一種描述被引用內(nèi)容的類型、元數(shù)據(jù)和內(nèi)容地址的工具。

3.4

學(xué)兔兔摘要digest標(biāo)準(zhǔn)下載

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

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

3.5

鏡像索引imageindex

1

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

T/SIA037.1—2023

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

到所需的文件。

3.6

鏡像清單imagemanifest

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

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

3.7

鏡像倉庫registry

一個(gè)無狀態(tài)的、高度可伸縮的服務(wù)器端應(yīng)用程序,可以存儲鏡像,并允許分發(fā)鏡像。

4縮略語

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

API:應(yīng)用程序編程接口(ApplicationProgrammingInterface)

BLOB:二進(jìn)制大對象(BinaryLargeObject)

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

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

UUID:通用唯一標(biāo)識符(UniversalUniqueIdentifier)

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

在軟件開發(fā)和部署過程中,分發(fā)是指將軟件或其相關(guān)組件從一個(gè)地點(diǎn)傳遞到另一個(gè)地點(diǎn)的過程。在

容器化環(huán)境中,容器鏡像分發(fā)是將容器鏡像文件從一個(gè)位置傳輸?shù)狡渌胤降倪^程。容器鏡像是一個(gè)輕

量級、可移植的軟件包,包含了運(yùn)行特定應(yīng)用程序所需的所有組件、依賴項(xiàng)和配置信息。容器鏡像分發(fā)

的目的是將這些容器鏡像有效地傳輸給需要部署和運(yùn)行這些應(yīng)用程序的目標(biāo)環(huán)境。

本規(guī)范中工業(yè)軟件容器鏡像的分發(fā)規(guī)定了四種工作流類別及其合規(guī)性要求,明確當(dāng)前工業(yè)軟件容

器鏡像版本兼容性,包括回退及升級的操作。工業(yè)軟件容器鏡像分發(fā)系統(tǒng)結(jié)構(gòu)如圖1所示:

合規(guī)性

工作流類別

合規(guī)性要求拉取操作推送操作內(nèi)容發(fā)現(xiàn)內(nèi)容管理

學(xué)兔兔版本兼容性標(biāo)準(zhǔn)下載

版本回退操作版本升級操作

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

2

T/SIA037.1—2023

6合規(guī)性

6.1合規(guī)性要求

分發(fā)合規(guī)性是指在工業(yè)軟件容器鏡像的拉取操作、推送操作、內(nèi)容發(fā)現(xiàn)和內(nèi)容管理等工作流類別中,

確保鏡像倉庫的操作符合相應(yīng)的規(guī)范和要求。

在拉取工作流中,客戶端可以從鏡像倉庫中拉取鏡像。分發(fā)合規(guī)性要求鏡像倉庫必須具備支持拉取

操作的功能,以確??蛻舳四軌虬踩⒖煽康孬@取所需的鏡像。

在推送工作流中,客戶端可以將鏡像推送到鏡像倉庫。分發(fā)合規(guī)性要求鏡像倉庫必須具備支持推送

操作的功能,同時(shí)符合相應(yīng)的規(guī)范和要求,以確保推送的鏡像符合安全性、可靠性和合法性的要求。

在內(nèi)容發(fā)現(xiàn)工作流中,客戶端可以列出或以其他方式查詢存儲在鏡像倉庫中的內(nèi)容。分發(fā)合規(guī)性要

求鏡像倉庫必須提供相應(yīng)的API,使客戶端能夠方便地發(fā)現(xiàn)和查詢存儲在倉庫中的鏡像內(nèi)容。

在內(nèi)容管理工作流中,客戶端可以控制存儲在鏡像倉庫中的內(nèi)容的整個(gè)生命周期。分發(fā)合規(guī)性要求

鏡像倉庫必須支持相關(guān)的操作和管理功能,以確保鏡像的存儲、更新、刪除等操作符合規(guī)范和要求。

符合分發(fā)合規(guī)性要求的鏡像倉庫必須實(shí)現(xiàn)以上提到的拉取操作、推送操作、內(nèi)容發(fā)現(xiàn)和內(nèi)容管理等

工作流類別的所有API,并且滿足相應(yīng)規(guī)范類別的要求。這樣的鏡像倉庫能夠保證鏡像的安全性、可靠

性和合法性,同時(shí)提供方便的內(nèi)容發(fā)現(xiàn)和管理功能,為用戶提供優(yōu)質(zhì)的工業(yè)軟件容器鏡像分發(fā)服務(wù)。

6.2工作流類別

6.2.1拉取操作

拉取清單操作

拉取對象的進(jìn)程以檢索兩個(gè)組件為主:清單和一個(gè)或多個(gè)blob。通常,拉取對象的第一步是檢索

清單,可以以任何順序在鏡像倉庫中檢索內(nèi)容。

要拉取清單,應(yīng)按以下格式對URL執(zhí)行GET請求:

/v2/<name>/manifests/<reference>

<name>指的是存儲庫的命名空間。<reference>必須是清單的摘要或標(biāo)記。<reference>不得采用任

何其它格式。在本規(guī)范中,<name>必須匹配以下正則表達(dá)式:

[a-z0-9]+([._-][a-z0-9]+)*(/[a-z0-9]+([._-][a-z0-9]+)*)*

在本規(guī)范中,作為標(biāo)簽的<reference>的長度必須最多為128個(gè)字符,并且必須匹配以下正則

表達(dá)式:

[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127}

客戶端應(yīng)該包含一個(gè)Accept標(biāo)頭,表明它支持的清單類型。在成功的響應(yīng)中,Content-Type標(biāo)頭

將指示返回清單的類型。如果清單有mediaType字段,客戶端應(yīng)該拒絕,除非mediaType字段的值與

學(xué)兔兔Content-Type標(biāo)頭指定的類型匹配。標(biāo)準(zhǔn)下載

對現(xiàn)有清單URL的GET請求必須提供期望的清單,響應(yīng)碼必須為200OK。一個(gè)成功的響應(yīng)應(yīng)該在

標(biāo)頭Content-Digest中包含上傳的blob的摘要。

3

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

T/SIA037.1—2023

如果響應(yīng)中存在Content-Digest標(biāo)頭,則返回上傳的blob的規(guī)范摘要,該摘要與提供的摘要不一

定相同。如果摘要確實(shí)不同,則是使用的散列算法不匹配。大多數(shù)客戶端可以忽略該值,但如果使用它,

客戶端必須根據(jù)上傳的blob數(shù)據(jù)驗(yàn)證該值。

如果在鏡像倉庫中找不到清單,則響應(yīng)碼必須是404NotFound。

拉取blob操作

要拉取blob,應(yīng)按以下格式對URL進(jìn)行GET請求:

/v2/<name>/blobs/<digest>

<name>是存儲庫的命名空間,<digest>是blob的摘要。

對現(xiàn)有blobURL的GET請求必須提供期望的blob,響應(yīng)碼必須為200OK。一個(gè)成功的響應(yīng)應(yīng)該在

標(biāo)頭Content-Digest中包含上傳的blob的摘要。如果blob存在,此標(biāo)頭的值必須是與響應(yīng)主體匹配

的摘要。

如果在鏡像倉庫中找不到blob,則響應(yīng)碼必須是404NotFound。

驗(yàn)證存儲庫操作

為了驗(yàn)證存儲庫是否包含給定的清單或blob,應(yīng)按以下格式向URL發(fā)出HEAD請求:

/v2/<name>/manifests/<reference>

/v2/<name>/blobs/<digest>

對現(xiàn)有blob或清單URL的HEAD請求必須返回200OK。一個(gè)成功的響應(yīng)應(yīng)該在標(biāo)頭Content-Digest

中包含上傳的blob的摘要。

如果在鏡像倉庫中找不到blob或清單,則響應(yīng)碼必須是404Notfound。

6.2.2推送操作

整體推送操作

推送的順序通常與拉取相反:首先上傳構(gòu)成對象的blob,然后推送清單。

如果它引用了鏡像倉庫中不存在的清單或blob,鏡像倉庫會拒絕上傳到清單端點(diǎn)的任何類型清單。

鏡像倉庫必須接受具有引用不存在的清單的主題字段的其它有效清單,從而允許客戶端以任一順序推

送清單和該清單的來源。

有兩種方法可以整體推送blob:

a)POSTthenPUT(一個(gè)POST請求后跟一個(gè)PUT請求):

要通過使用POST請求后跟PUT請求的方法來整體推送blob,有兩個(gè)步驟:獲取會話id(上傳URL);

將blob上傳到所述URL。

學(xué)兔兔要獲取會話ID,應(yīng)按以下格式對URL執(zhí)行POST請求:標(biāo)準(zhǔn)下載

/v2/<name>/blobs/uploads/

這里,<name>指的是存儲庫的命名空間。成功后,響應(yīng)必須包含202Accepted代碼,且必須包含

以下標(biāo)頭:

Location:<location>

4

T/SIA037.1—2023

<location>必須包含一個(gè)UUID,該UUID代表一個(gè)唯一的會話ID,以便接下來的上傳。<location>

不一定需要由鏡像倉庫本身提供。事實(shí)上,裝載到另一臺服務(wù)器是個(gè)更好的策略。

可選擇地,位置可以是絕對的(包含協(xié)議和/或主機(jī)名),也可以是相對的(僅包含URL路徑)。

一旦獲取<location>后,通過以下URL路徑發(fā)送PUT請求并使用以下標(biāo)頭和主體以正確上傳:

<location>?digest=<digest>

Content-Length:<length>

Content-Type:application/octet-stream

<uploadbytestream>

<location>包含關(guān)鍵查詢參數(shù)。此外,它應(yīng)該與從POST請求中獲得的<location>完全匹配。

這里<digest>是正在上傳的blob的摘要,<length>是它的以字節(jié)為單位的大小。

成功完成請求后,響應(yīng)必須具有代碼201created且必須具有以下標(biāo)頭:

Location:<blob-location>

<blob-location>是一個(gè)可拉取的blobURL。

b)SinglePOST(單個(gè)POST請求):

鏡像倉庫支持使用單個(gè)POST請求推送blob。

要使用單個(gè)POST請求以整體方式推送blob,應(yīng)使用以下格式對URL執(zhí)行POST請求,并使用以下

標(biāo)頭和主體:

/v2/<name>/blobs/uploads/?digest=<digest>

Content-Length:<length>

Content-Type:application/octet-stream

<uploadbytestream>

這里,<name>是存儲庫的命名空間,<digest>是blob的摘要,<length>是blob的大小(以字節(jié)為

單位)。

Content-Length的標(biāo)頭必須與blob的實(shí)際內(nèi)容長度匹配。同樣,<digest>必須匹配blob的摘要。

不支持單一請求整體上傳的鏡像倉庫應(yīng)返回202Accepted狀態(tài)碼和Location標(biāo)頭,并且客戶端

應(yīng)該繼續(xù)執(zhí)行后續(xù)PUT請求,如POST后跟PUT上傳方法所述。

成功完成請求必須返回201Created并且必須包含以下標(biāo)頭:

Location:<blob-location>

這里,<blob-location>是一個(gè)可拉取的blobURL。此位置不一定必須由鏡像倉庫提供服務(wù)。

分塊推送操作

分塊上傳blob分三個(gè)階段完成:

a)獲取會話ID(上傳URL)(POST)

學(xué)兔兔b)上傳塊(PATCH)標(biāo)準(zhǔn)下載

c)關(guān)閉會話(PUT)

有關(guān)獲取會話ID的信息,應(yīng)參閱上面有關(guān)通過POST/PUT方法整體推送blob的部分。分塊上傳的

過程保持不變,除了發(fā)布請求必須包含以下標(biāo)頭:

Content-Length:0

5

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

T/SIA037.1—2023

應(yīng)參考上述部分以了解對<location>的限制。

要上傳塊,應(yīng)向以下格式的URL路徑發(fā)出PATCH請求,并使用以下標(biāo)頭和正文:

URLpath:<location>

Content-Type:application/octet-stream

Content-Range:<range>

Content-Length:<length>

<uploadbytestreamofchunk>

<location>指的是從前面的POST請求中獲取的URL。

<range>是指塊的字節(jié)范圍,并且必須包含兩端。第一個(gè)塊的范圍必須以0開頭。它必須匹配以下

正則表達(dá)式:

^[0-9]+-[0-9]+$

<length>是當(dāng)前塊的內(nèi)容長度,以字節(jié)為單位。

每個(gè)成功的塊上傳必須有一個(gè)202Accepted響應(yīng)代碼,并且具有以下標(biāo)頭:

Location<location>

每個(gè)連續(xù)的塊上傳應(yīng)該使用對前一個(gè)塊上傳的響應(yīng)中提供的<location>。

塊必須按順序上傳,塊的第一個(gè)字節(jié)是最后一個(gè)塊的<end-of-range>加1。如果一個(gè)塊被亂序上傳,

鏡像倉庫必須以416RequestedRangeNotSatisfiable代碼響應(yīng)。

最后的塊可以用PATCH請求上傳,也可以在關(guān)閉的PUT請求中上傳。無論最終塊如何上傳,都必須

使用PUT請求關(guān)閉會話。

要關(guān)閉會話,應(yīng)向以下格式的URL發(fā)出PUT請求,并使用以下標(biāo)頭(可選擇,取決于最終塊是否已

經(jīng)通過PATCH請求上傳):

<location>?digest=<digest>

Content-Length:<lengthofchunk,ifpresent>

Content-Range:<rangeofchunk,ifpresent>

Content-Type:application/octet-stream<ifchunkprovided>

OPTIONAL:<finalchunkbytestream>

關(guān)閉的PUT請求必須包含整個(gè)blob(不是最終塊)的<digest>作為查詢參數(shù)。

成功關(guān)閉會話的響應(yīng)必須是201Created,并且必須包含以下標(biāo)頭:

Location:<blob-location>

這里,<blob-location>是一個(gè)可拉取的blobURL。

掛載blob操作

如果必要的blob已經(jīng)存在于同一鏡像倉庫中的另一個(gè)存儲庫中,則可以通過以下格式的POST請

求將其掛載到不同的存儲庫中:學(xué)兔兔標(biāo)準(zhǔn)下載

/v2/<name>/blobs/uploads/?mount=<digest>&from=<other_name>

在這種情況下,<name>是blob將被掛載到的命名空間。<digest>是要掛載blob的摘要,<other_name>

是應(yīng)被掛載blob的命名空間。這一步通常代替簽名描述的對/v2/<name>/blobs/uploads/的請求(用于

啟動上傳會話)。

6

T/SIA037.1—2023

成功掛載的響應(yīng)必須是201Created,并且必須包含以下標(biāo)頭:

Location:<blob-location>

Location標(biāo)頭將包含用于訪問接受的層的文件的鏡像倉庫。Content-Digest標(biāo)頭返回上傳的blob

的規(guī)范摘要,與提供的摘要不同。大多數(shù)客戶端可以忽略該值,但如果使用它,客戶端應(yīng)該根據(jù)上傳的

blob數(shù)據(jù)驗(yàn)證該值。

鏡像倉庫可以將from參數(shù)視為可選參數(shù),如果可以找到它,它可以交叉安裝blob。

或者,如果鏡像倉庫不支持跨存儲庫掛載或無法掛載請求的blob,它應(yīng)該返回202。這表明上傳會

話已經(jīng)開始,并且客戶端可以繼續(xù)上傳。

推送清單操作

要推送清單,應(yīng)對以下格式的路徑執(zhí)行PUT請求,并使用以下標(biāo)頭和主體:

/v2/<name>/manifests/<reference>

客戶端應(yīng)該將Content-Type標(biāo)頭設(shè)置為被推送的清單的類型。所有清單都應(yīng)該包含一個(gè)mediaType

字段來聲明被推送的清單類型。如果清單包含mediaType字段,客戶端必須將Content-Type標(biāo)頭設(shè)置

為mediaType字段指定的值。

Content-Type:application/vnd.image.manifest.v1+json

清單字節(jié)流:

{

"mediaType":"application/vnd.image.manifest.v1+json",

...

}

<name>是存儲庫的命名空間,<reference>必須是摘要或標(biāo)記。

上傳的清單必須引用構(gòu)成對象的任何blob。但是,blob列表可能為空。

鏡像倉庫必須以客戶端提供的確切字節(jié)表示形式存儲清單。成功上傳后,鏡像倉庫必須返回響應(yīng)代

碼201Created,并且必須具有以下標(biāo)頭:

Location:<blob-location>

<location>是一個(gè)可拉取的清單URL。Content-Digest標(biāo)頭返回上傳的blob的規(guī)范摘要,并且必

須等于客戶端提供的摘要。客戶端可以忽略該值,但如果使用它,客戶端應(yīng)該根據(jù)上傳的blob數(shù)據(jù)驗(yàn)

證該值。

嘗試?yán)〔淮嬖诘拇鎯毂仨毞祷仨憫?yīng)代碼404NotFound。

鏡像倉庫應(yīng)該對它能接受的最大清單大小做一些限制。強(qiáng)制執(zhí)行此限制的鏡像倉庫應(yīng)響應(yīng)將清單

推送到此限制的請求,響應(yīng)代碼為413PayloadTooLarge??蛻舳撕顽R像倉庫實(shí)現(xiàn)應(yīng)該期望能夠支持

學(xué)兔兔至少4MB的清單推送。標(biāo)準(zhǔn)下載

推送主題清單操作

當(dāng)推送帶有主題字段的鏡像或制品清單并且來源API404時(shí),客戶端必須:

a)使用ReferrersTagSchema拉取當(dāng)前來源列表;

b)如果該拉取返回的清單不是預(yù)期的鏡像索引,則客戶端應(yīng)報(bào)告失敗并跳過其余步驟;

7

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

T/SIA037.1—2023

c)如果標(biāo)簽返回404,客戶端必須以空鏡像索引開始;

d)驗(yàn)證清單的描述符不在引用列表中(不應(yīng)該創(chuàng)建重復(fù)的條目);

e)將推送的鏡像或制品清單的描述符附加到來源列表中的清單。artifactType的值必須在描述

符中設(shè)置為artifactmanifest中的artifactType的值,或者鏡像清單中的配置描述符

mediaType。必須將鏡像或制品清單中的所有注釋復(fù)制到此描述符。

f)使用相同的來源標(biāo)簽架構(gòu)推送更新的來源列表??蛻舳丝梢允褂脳l件HTTP請求來防止覆蓋自

首次拉取后已更改的來源列表。

6.2.3內(nèi)容發(fā)現(xiàn)

獲取標(biāo)簽操作

要獲取標(biāo)簽列表,應(yīng)對以下格式的路徑執(zhí)行GET請求:/v2/<name>/tags/list。

<name>是存儲庫的命名空間。假設(shè)找到存儲庫,此請求必須返回200OK響應(yīng)代碼。如果存儲庫上

沒有標(biāo)簽,標(biāo)簽列表可能為空。如果列表不為空,則標(biāo)簽必須按詞匯順序(即不區(qū)分大小寫的字母數(shù)字

順序)。

成功后,響應(yīng)必須是以下格式的json正文:

{

"name":"<name>",

"tags":[

"<tag1>",

"<tag2>",

"<tag3>"

]

}

<name>是存儲庫的命名空間,<tag1>、<tag2>和<tag3>是存儲庫上的每個(gè)標(biāo)簽。

除了獲取整個(gè)標(biāo)簽列表之外,還可以通過提供n查詢參數(shù)來獲取標(biāo)簽的子集。在這種情況下,路徑

將如下所示:/v2/<name>/tags/list?n=<int>。

<name>是存儲庫的命名空間,<int>是一個(gè)整數(shù),指定請求的標(biāo)簽數(shù)量。僅當(dāng)附加到存儲庫的標(biāo)簽

總數(shù)少于<int>時(shí),對此類請求的響應(yīng)可能返回少于<int>個(gè)的結(jié)果。否則,響應(yīng)必須包含<int>個(gè)結(jié)果。

當(dāng)n為零時(shí),該端點(diǎn)必須返回一個(gè)空列表,并且不得包含Link標(biāo)頭。如果沒有最后一個(gè)查詢參數(shù)(如

下所述),返回的列表將從列表的開頭開始并包含<int>個(gè)結(jié)果。如上所述,標(biāo)簽必須按詞匯順序排列。

最后一個(gè)查詢參數(shù)提供了進(jìn)一步限制標(biāo)簽數(shù)量的方法。它通常與n參數(shù)結(jié)合使用:

/v2/<name>/tags/list?n=<int>&last=<tagname>。

<name>是存儲庫的命名空間,<int>是請求的標(biāo)簽數(shù),<tagname>是最后一個(gè)標(biāo)簽的值。<tagname>

不能是數(shù)字索引,而必須是正確的標(biāo)簽。這種類型的請求將返回到學(xué)兔兔<int>標(biāo)簽,不包含以標(biāo)準(zhǔn)下載<tagname>開頭,

即<tagname>不會包含在結(jié)果中,但會返回<tagname>之后的最多<int>個(gè)標(biāo)簽。標(biāo)簽必須按詞匯順序排

列。

使用最后一個(gè)查詢參數(shù)時(shí),n參數(shù)是可選的。

獲取來源操作

8

T/SIA037.1—2023

要獲取來源列表,應(yīng)對以下格式的路徑執(zhí)行GET請求:/v2/<name>/referrers/<digest>。

<name>是存儲庫的命名空間,<digest>是在主題字段中指定的清單的摘要。

假設(shè)找到存儲庫,此請求必須返回200OK響應(yīng)代碼。如果鏡像倉庫支持來源API,則鏡像倉庫不

得向來源API請求返回404NotFound。如果請求無效,像具有無效語法的<digest>,則必須返回400

BadRequest。

成功后,響應(yīng)必須是JSON主體,其鏡像索引包含描述符列表。每個(gè)描述符都屬于同一<name>命名

空間中的鏡像或制品清單,主題字段指定<digest>的值。描述符必須包含一個(gè)artifactType字段,該

字段設(shè)置為制品清單的artifactType值(如果存在),或者配置描述符的mediaType用于鏡像清單。

描述符必須包括來自鏡像或制品清單的注釋。如果查詢結(jié)果沒有匹配的來源,則必須返回一個(gè)空的清單

列表。如果帶有摘要<digest>的清單不存在,則鏡像倉庫可以返回一個(gè)空清單列表。在推送帶有摘要

<digest>的清單后,鏡像倉庫必須在引用列表中包含先前推送的條目。

當(dāng)描述符列表不能在單個(gè)清單中返回時(shí),必須在響應(yīng)中包含鏈接頭。每個(gè)響應(yīng)都是一個(gè)鏡像索引,

在manifests字段中具有不同的描述符。必須根據(jù)RFC5988使用關(guān)系類型rel="next"設(shè)置鏈接頭。

鏡像倉庫應(yīng)該支持對artifactType的過濾。要使用過濾器獲取來源列表應(yīng)對以下格式的路徑執(zhí)行

GET請求:/v2/<name>/referrers/<digest>?artifactType=<mediaType>。如果請求應(yīng)用了過濾,則響

應(yīng)必須包含一個(gè)注釋,表示應(yīng)用了artifactType過濾器。如果應(yīng)用了多個(gè)過濾器,注釋必須包含一個(gè)

逗號分隔的應(yīng)用過濾器列表。

如果來源API返回404,則客戶端必須回退到拉取referrerstagschema。響應(yīng)應(yīng)該是一個(gè)鏡像

索引,其內(nèi)容與來源API的預(yù)期內(nèi)容相同。如果對來源API的響應(yīng)是404,并且標(biāo)簽框架沒有返回有效

的鏡像索引,則客戶端應(yīng)該假設(shè)清單中沒有來源。

6.2.4內(nèi)容管理

刪除標(biāo)簽操作

<name>是存儲庫的命名空間,<tag>是要刪除的標(biāo)簽的名稱。成功后,鏡像倉庫必須以202Accepted

代碼響應(yīng)。如果標(biāo)簽刪除被禁用,鏡像倉庫必須響應(yīng)400BadRequest或405MethodNotAllowed。

要刪除標(biāo)簽,應(yīng)對以下格式的路徑執(zhí)行DELETE請求:

/v2/<name>/manifests/<tag>。

刪除清單操作

要刪除清單,應(yīng)對以下格式的路徑執(zhí)行DELETE請求:

/v2/<name>/manifests/<digest>。

<name>是存儲庫的命名空間,<digest>是要刪除的清單的摘要。成功后,鏡像倉庫必須以202

Accepted代碼響應(yīng)。如果存儲庫不存在,則響應(yīng)必須返回404NotFound。

學(xué)兔兔當(dāng)刪除包含主題字段的鏡像或制品清單時(shí),并且來源API返回404,客戶端應(yīng)該:標(biāo)準(zhǔn)下載

a)使用referrerstagschema拉取來源列表;

b)從引用已刪除清單的清單數(shù)組中刪除描述符條目;

c)使用相同的referrerstagschema推送更新的來源列表??蛻舳丝梢允褂脳l件HTTP請求來

防止覆蓋自首次拉取后已更改的來源列表。

9

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

T/SIA037.1—2023

當(dāng)刪除具有關(guān)聯(lián)referrerstagschema的清單時(shí),客戶端也可以在返回有效鏡像索引時(shí)刪除來源

標(biāo)簽。

刪除blob操作

要刪除blob,應(yīng)對以下格式的路徑執(zhí)行DELETE請求:/v2/<name>/blob/<digest>。

<name>是存儲庫的命名空間,<digest>是要刪除的blob的摘要。成功后,鏡像倉庫必須響應(yīng)代碼

202Accepted。如果找不到blob,則必須返回404NotFound代碼。

7版本兼容性

7.1兼容性

工業(yè)軟件容器鏡像版本兼容性是指在工業(yè)軟件容器環(huán)境中,確保不同版本的工業(yè)軟件容器鏡像能

夠正確運(yùn)行和相互配合的能力。

工業(yè)軟件容器鏡像是將工業(yè)軟件應(yīng)用程序、依賴庫、配置文件等打包為一個(gè)可移植、自包含的容器

化形式,以實(shí)現(xiàn)快速部署、可重復(fù)性和可擴(kuò)展性。它包含了應(yīng)用程序的所有運(yùn)行時(shí)需要的組件,并以鏡

像的形式進(jìn)行分發(fā)和部署。

在工業(yè)領(lǐng)域,工業(yè)軟件具有一些特殊的要求和特點(diǎn)。首先,工業(yè)軟件往往需要與底層硬件設(shè)備和工

業(yè)網(wǎng)絡(luò)進(jìn)行交互,包括數(shù)據(jù)采集、設(shè)備控制、實(shí)時(shí)通信等。其次,工業(yè)軟件的穩(wěn)定性和可靠性對于生產(chǎn)

過程的安全和正常運(yùn)行至關(guān)重要。因此,工業(yè)軟件容器鏡像的版本兼容性在工業(yè)環(huán)境中尤為重要。

工業(yè)軟件容器鏡像版本兼容性要求不同版本的工業(yè)軟件容器鏡像能夠無縫地進(jìn)行部署和運(yùn)行,保

持正常的功能和性能。要求在升級或更換工業(yè)軟件容器鏡像時(shí),應(yīng)確保新版本與舊版本之間的兼容性,

以避免應(yīng)用程序的中斷或功能損失。這要求工業(yè)軟件容器鏡像的開發(fā)者在設(shè)計(jì)和開發(fā)過程中考慮版本

兼容性,并提供清晰的文檔和指導(dǎo),以確保用戶能夠正確地升級和使用新版本的鏡像。

7.2版本回退選擇

客戶端必須支持舊版本的工業(yè)軟件容器鏡像分發(fā)規(guī)范。本節(jié)描述了當(dāng)鏡像倉庫沒有新的/可選擇的

API時(shí)必須實(shí)現(xiàn)的客戶端回退程序。

使用已定義主題字段推送鏡像或制品清單的客戶端必須驗(yàn)證來源API是否可用或回退以更新推送

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論