Docker manifest 詳解

`` docker manifest COMMAND COMMAND ``

在 18.02 (#138)版本中添加


參考鏈接:https://docs.docker.com/engine/reference/commandline/manifest/#push-to-an-insecure-registry

? ? ? ? ? ? ? ? ??http://www.reibang.com/p/fad6b6fb4599


該docker manifest命令本身不執(zhí)行任何操作。為了對(duì)manifestmanifest list進(jìn)行操作繁莹,必須有一個(gè)子命令哪亿。

????1. manifest是一個(gè)文件察郁,這個(gè)文件包含了有關(guān)于鏡像信息缅叠,如層、大小和摘要。docker manifest命令還向用戶提供附加信息怀大,比如構(gòu)建鏡像的操作系統(tǒng)和體系結(jié)構(gòu)。

????2. manifest list 是通過制定一個(gè)或者多個(gè)鏡像名稱創(chuàng)建的鏡像層列表呀闻,它可以被當(dāng)作鏡像名稱在docker pull 和docker run 的命令中使用

理想的情況下:manifest是根據(jù)相同功能化借,不同的os/arch組合的鏡像構(gòu)建的,因此捡多,manifest 通常被稱為“多架構(gòu)鏡像”蓖康。

但是,用戶可以創(chuàng)建一個(gè)指向兩個(gè)鏡像的manifest垒手,然后對(duì)用戶提供一個(gè)唯一的鏡像名稱蒜焊。如:一個(gè)用于amd64的Windows上,一個(gè)用于amd上的darwin

從Docker registry v2.3和Docker 1.10 開始科贬,Docker hub就可以pull multi architecture Docker鏡像了泳梆。


manifest inspect


manifest inspect --help

Usage: docker manifest inspect[OPTIONS][MANIFEST_LIST] MANIFEST

顯示鏡像的 manifest, or manifest list

Options:

????????--help? ? ? ? ? ? ? ? 用法

????????--insecure? ? ? ? ?允許與不安全的注冊(cè)表通信

????????-v, --verbose? ? ?輸出其他信息包括 layers 和 platform


manifest create


Usage: docker manifest create MANIFEST_LIST MANIFEST[MANIFEST...]

Create a local manifest list for annotating and pushing to a registry

為annotating 創(chuàng)建一個(gè)本地的manifest, push到鏡像倉(cāng)庫(kù)中

Options:

????????-a,--amend????????修改現(xiàn)有manifest list

????????--insecure? ? ? ? ?允許與不安全的注冊(cè)表進(jìn)行通信

????????--help? ? ? ? ? ? ? ? 用法


manifest annotate


Usage: docker manifest annotate [OPTIONS] MANIFEST_LIST MANIFEST

添加其他信息到本地鏡像的manifest

Options:

? ? ? --arch string? ? ? ? ? ? ? ???? ????設(shè)置體系結(jié)構(gòu)

? ? ? --help? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????用法

? ? ? --os string? ? ? ? ? ? ? ? ? ? ? ????設(shè)置操作系統(tǒng)

? ? ? --os-version string? ? ? ????? 設(shè)置操作系統(tǒng)版本

? ? ? --os-features stringSlice? 設(shè)置操作系統(tǒng)功能

? ? ? --variant string? ? ? ? ? ? ?????設(shè)置體系結(jié)構(gòu)變體


manifest push


Usage: docker manifest push [OPTIONS] MANIFEST_LIST

將 manifest list 推到 repository

Options:

? ? ? --help? ? ????????? 用法

? ? ? --insecure? ? ? ?允許推送到不安全的倉(cāng)庫(kù)中

????? -p, --purge? ? ? 推送后刪除本地清單列表


使用不安全的registries


manifest命令僅與Docker 倉(cāng)庫(kù)交互榜掌。因此优妙,它無法查詢引擎以獲取允許的不安全倉(cāng)庫(kù)列表。為了允許CLI與不安全的倉(cāng)庫(kù)進(jìn)行交互憎账,某些docker manifest 命令帶有一個(gè)--insecure標(biāo)志套硼。對(duì)于每個(gè)create查詢注冊(cè)表的事務(wù)(例如),--insecure必須指定標(biāo)志胞皱。此標(biāo)志告訴CLI邪意,此注冊(cè)表調(diào)用可能會(huì)忽略安全性問題,例如丟失或自簽名證書朴恳。同樣抄罕,在manifest 推到不安全的倉(cāng)庫(kù)上的時(shí)候,--insecure必須指定該標(biāo)志于颖。如果未與不安全的倉(cāng)庫(kù)一起使用呆贿,清單命令將找不到符合默認(rèn)要求的倉(cāng)庫(kù)。


舉例


1. 檢查鏡像的manifest對(duì)象

``

$ docker manifest inspect hello-world

{

? ? ? ? "schemaVersion": 2,

? ? ? ? "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

? ? ? ? "config": {

? ? ? ? ? ? ? ? "mediaType": "application/vnd.docker.container.image.v1+json",

? ? ? ? ? ? ? ? "size": 1520,

? ? ? ? ? ? ? ? "digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"

? ? ? ? },

? ? ? ? "layers": [

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",

? ? ? ? ? ? ? ? ? ? ? ? "size": 972,

? ? ? ? ? ? ? ? ? ? ? ? "digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"

? ? ? ? ? ? ? ? }

? ? ? ? ]

}

``


2. 檢查鏡像的manifest并獲取os/arch信息

該docker manifest inspect命令帶有一個(gè)可選--verbose標(biāo)志森渐,可以提供image的名稱(Ref)做入,體系結(jié)構(gòu)和os(平臺(tái))。就像其他使用映像名稱的docker命令一樣同衣,可以引用帶有或不帶有標(biāo)簽的映像竟块,也可以引用摘要(例如hello-world@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f)。

這是一個(gè)使用--verbose標(biāo)志檢查鏡像的manifest的示例:

$ docker manifest inspect --verbose hello-world

{

? ? ? ? "Ref": "docker.io/library/hello-world:latest",

? ? ? ? "Digest": "sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f",

? ? ? ? "SchemaV2Manifest": {

? ? ? ? ? ? ? ? "schemaVersion": 2,

? ? ? ? ? ? ? ? "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

? ? ? ? ? ? ? ? "config": {

? ? ? ? ? ? ? ? ? ? ? ? "mediaType": "application/vnd.docker.container.image.v1+json",

? ? ? ? ? ? ? ? ? ? ? ? "size": 1520,

? ? ? ? ? ? ? ? ? ? ? ? "digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"

? ? ? ? ? ? ? ? },

? ? ? ? ? ? ? ? "layers": [

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "size": 972,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ]

? ? ? ? },

? ? ? ? "Platform": {

? ? ? ? ? ? ? ? "architecture": "amd64",

? ? ? ? ? ? ? ? "os": "linux"

? ? ? ? }

}


3. 創(chuàng)建并推一個(gè)manifest list

要?jiǎng)?chuàng)建manifest list耐齐,首先要在本地 create manifest list浪秘,方法是指定要包含在manifest list中的組成鏡像蒋情。 請(qǐng)記住,這已推送到鏡像倉(cāng)耸携,因此棵癣,如果要推送到docker鏡像倉(cāng)以外的其他倉(cāng)庫(kù),則需要使用倉(cāng)庫(kù)名稱或IP和端口創(chuàng)建manifest list夺衍。 這類似于標(biāo)記鏡像并將其推送到外部鏡像倉(cāng)庫(kù)狈谊。

創(chuàng)建manifest list的本地副本后,可以選擇對(duì)其進(jìn)行注釋沟沙。 允許的注釋包括體系結(jié)構(gòu)和操作系統(tǒng)(覆蓋鏡像的當(dāng)前值)河劝,操作系統(tǒng)功能以及體系結(jié)構(gòu)變體。

最后矛紫,需要將清單列表推送到所需的鏡像倉(cāng)赎瞎。 下面是對(duì)這三個(gè)命令的描述,以及將它們?nèi)拷M合在一起的示例颊咬。

$ docker manifest create 45.55.81.106:5000/coolapp:v1 \

? ? 45.55.81.106:5000/coolapp-ppc64le-linux:v1 \

? ? 45.55.81.106:5000/coolapp-arm-linux:v1 \

? ? 45.55.81.106:5000/coolapp-amd64-linux:v1 \

? ? 45.55.81.106:5000/coolapp-amd64-windows:v1

Created manifest list 45.55.81.106:5000/coolapp:v1


$ docker manifest annotate 45.55.81.106:5000/coolapp:v1 45.55.81.106:5000/coolapp-arm-linux--archarm


$ docker manifest push 45.55.81.106:5000/coolapp:v1

Pushed manifest 45.55.81.106:5000/coolapp@sha256:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426 with digest: sha256:f67dcc5fc786f04f0743abfe0ee5dae9bd8caf8efa6c8144f7f2a43889dc513b

Pushed manifest 45.55.81.106:5000/coolapp@sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f with digest: sha256:b64ca0b60356a30971f098c92200b1271257f100a55b351e6bbe985638352f3a

Pushed manifest 45.55.81.106:5000/coolapp@sha256:39dc41c658cf25f33681a41310372f02728925a54aac3598310bfb1770615fc9 with digest: sha256:df436846483aff62bad830b730a0d3b77731bcf98ba5e470a8bbb8e9e346e4e8

Pushed manifest 45.55.81.106:5000/coolapp@sha256:f91b1145cd4ac800b28122313ae9e88ac340bb3f1e3a4cd3e59a3648650f3275 with digest: sha256:5bb8e50aa2edd408bdf3ddf61efb7338ff34a07b762992c9432f1c02fc0e5e62

sha256:050b213d49d7673ba35014f21454c573dcbec75254a08f4a7c34f66a47c06aba


檢查 manifest list

$ docker manifest inspect coolapp:v1

{

? "schemaVersion": 2,

? "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",

? "manifests": [

? ? ? {

? ? ? ? "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

? ? ? ? "size": 424,

? ? ? ? "digest": "sha256:f67dcc5fc786f04f0743abfe0ee5dae9bd8caf8efa6c8144f7f2a43889dc513b",

? ? ? ? "platform": {

? ? ? ? ? ? "architecture": "arm",

? ? ? ? ? ? "os": "linux"

? ? ? ? }

? ? ? },

? ? ? {

? ? ? ? "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

? ? ? ? "size": 424,

? ? ? ? "digest": "sha256:b64ca0b60356a30971f098c92200b1271257f100a55b351e6bbe985638352f3a",

? ? ? ? "platform": {

? ? ? ? ? ? "architecture": "amd64",

? ? ? ? ? ? "os": "linux"

? ? ? ? }

? ? ? },

? ? ? {

? ? ? ? "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

? ? ? ? "size": 425,

? ? ? ? "digest": "sha256:df436846483aff62bad830b730a0d3b77731bcf98ba5e470a8bbb8e9e346e4e8",

? ? ? ? "platform": {

? ? ? ? ? ? "architecture": "ppc64le",

? ? ? ? ? ? "os": "linux"

? ? ? ? }

? ? ? },

? ? ? {

? ? ? ? "mediaType": "application/vnd.docker.distribution.manifest.v2+json",

? ? ? ? "size": 425,

? ? ? ? "digest": "sha256:5bb8e50aa2edd408bdf3ddf61efb7338ff34a07b762992c9432f1c02fc0e5e62",

? ? ? ? "platform": {

? ? ? ? ? ? "architecture": "s390x",

? ? ? ? ? ? "os": "linux"

? ? ? ? }

? ? ? }

? ]

}


推送到不安全的鏡像倉(cāng)庫(kù)

$ docker manifest create --insecure myprivateregistry.mycompany.com/repo/image:1.0 \

? ? myprivateregistry.mycompany.com/repo/image-linux-ppc64le:1.0 \

? ? myprivateregistry.mycompany.com/repo/image-linux-s390x:1.0 \

? ? myprivateregistry.mycompany.com/repo/image-linux-arm:1.0 \

? ? myprivateregistry.mycompany.com/repo/image-linux-armhf:1.0 \

? ? myprivateregistry.mycompany.com/repo/image-windows-amd64:1.0 \

? ? myprivateregistry.mycompany.com/repo/image-linux-amd64:1.0

$ docker manifest push --insecure myprivateregistry.mycompany.com/repo/image:tag



manifest list處理流程



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煎娇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贪染,更是在濱河造成了極大的恐慌,老刑警劉巖催享,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杭隙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡因妙,警方通過查閱死者的電腦和手機(jī)痰憎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攀涵,“玉大人铣耘,你說我怎么就攤上這事∫怨剩” “怎么了蜗细?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)怒详。 經(jīng)常有香客問我炉媒,道長(zhǎng),這世上最難降的妖魔是什么昆烁? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任吊骤,我火速辦了婚禮,結(jié)果婚禮上静尼,老公的妹妹穿的比我還像新娘白粉。我一直安慰自己传泊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布鸭巴。 她就那樣靜靜地躺著眷细,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奕扣。 梳的紋絲不亂的頭發(fā)上薪鹦,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音惯豆,去河邊找鬼池磁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛楷兽,可吹牛的內(nèi)容都是我干的地熄。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼芯杀,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼端考!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起揭厚,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤却特,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后筛圆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體裂明,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年太援,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了闽晦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡提岔,死狀恐怖仙蛉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碱蒙,我是刑警寧澤荠瘪,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站赛惩,受9級(jí)特大地震影響巧还,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坊秸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一麸祷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褒搔,春花似錦阶牍、人聲如沸喷面。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惧辈。三九已至,卻和暖如春磕瓷,著一層夾襖步出監(jiān)牢的瞬間盒齿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工困食, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留边翁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓硕盹,卻偏偏與公主長(zhǎng)得像符匾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瘩例,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容