Manifest實現(xiàn)多CPU架構(gòu)Docker鏡像(Docker 鏡像跨平臺使用)

1漩氨、manifest是什么西壮,干什么用?

manifest是一個文件叫惊,這個文件包含了有關(guān)于鏡像信息款青,如層、大小和摘要霍狰。docker manifest命令還向用戶提供附加信息抡草,比如構(gòu)建鏡像的操作系統(tǒng)和體系結(jié)構(gòu)。而manifest list是一個鏡像清單列表蔗坯,用于存放多個不同os/arch的鏡像信息康震。我們可以創(chuàng)建一個manifest list來指向兩個鏡像(一個linux 64位和一個指向arm64位的鏡像),然后對用戶提供一個唯一的鏡像名稱宾濒。從Docker registry v2.3和Docker 1.10 開始腿短,Docker hub就可以pull multi architecture Docker鏡像了。

一個鏡像的manifest文件信息如下:

[root@localhost ~]# docker manifest inspect java
{
        "schemaVersion": 2,
        "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
        "config": {
                "mediaType": "application/vnd.docker.container.image.v1+json",
                "size": 4733,
                "digest": "sha256:d23bdf5b1b1b1afce5f1d0fd33e7ed8afbc084b594b9ccf742a5b27080d8a4a8"
        },
        "layers": [ #---鏡像層的摘要信息
                {
                        "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                        "size": 51361210,
                        "digest": "sha256:5040bd2983909aa8896b9932438c3f1479d25ae837a5f6220242a264d0221f2d"
                },
...................
        ]
}

一個manifest list的例子如下:

{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1357,
         "digest": "sha256:9b47044b1e79b965a8e1653e7f9c04b5f63e00b9161bedd5baef69bb8b4c4834",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 1357,
         "digest": "sha256:8aecae775e1f81d3889929ef15647187b414c833b0798d060bfd778bee668ced",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }
      }
   ]
}

注意:manifest的功能目前僅僅作用于docker 官方的鏡像倉庫绘梦。

總結(jié):簡單的說manifest list就是多個manifest的一個集合橘忱,通過列表方式來管理。


2卸奉、manifest list處理流程:

manifest-2.jpg
docker-manifest.png

3钝诚、開啟docker子命令manifest功能:

manifest是做為docker客戶端的子命令存在,不過這個子命令目前處在實驗性中一般沒有開啟择卦。我們需要手動開始這個子命令的功能敲长。開啟過程如下:

1)、編輯配置文件config.json應(yīng)用實驗性功能:
docker 的默認配置文件config.json是在$HOME目錄下的.docker目錄下秉继。編輯config.json文件祈噪,若目錄和文件不存在手動創(chuàng)建。

$vim ~/.docker/config.json
{
    "experimental": "enabled"
}

2)尚辑、編輯守護進程配置文件daemon.json開啟實驗性功能:
編輯daemon.json辑鲤,若目錄和文件不存在手動創(chuàng)建

$vim /etc/docker/daemon.json
{
  "experimental": true
}

3)、重啟docker:

$systemctl daemon-reload
$service docker restart
$docker manifest --help #----查看manifest幫助信息

開啟docker的實驗性功能后docker pull可以拉取指定平臺鏡像如下:

$docker pull --platform arm64  鏡像
--platform:該參數(shù)是用于拉取指定平臺的鏡像杠茬,也是實驗性功能月褥,在上面步驟中開啟后就會出現(xiàn)弛随。通
過該參數(shù)可以手動指定需要的CPU平臺鏡像,而不用自動去識別宁赤。

4舀透、使用manifest創(chuàng)建多CPU架構(gòu)的鏡像:

查看一個鏡像的manifest文件信息
$docker manifest inspect java

查看一個鏡像的manifest文件的詳細信息包括cpu平臺架構(gòu)等信息
$docker manifest inspect --verbose java

這里準(zhǔn)備好了兩個不同CPU架構(gòu)的鏡像如下:
這里的鏡像是自己在docker hub上創(chuàng)建的倉庫
xxx/public_docker:nginx-arm64
xxx/public_docker:nginx-x86
將上面兩個鏡像推到docker hub上面

1)、創(chuàng)建一個manifest list列表:
創(chuàng)建一個自定義命名的鏡像名的manifest list决左,然后用該列表關(guān)聯(lián)倉庫里面的兩個不同架構(gòu)的鏡像
$docker manifest create xxx/public_docker:nginx-v1 xxx/public_docker:nginx-arm64 xxx/public_docker:nginx-x86

2)愕够、將創(chuàng)建好的manifest list 推到倉庫中:
$docker manifest push xxx/public_docker:nginx-v1

3)、查看倉庫中創(chuàng)建好的manifest list:
$docker manifest inspect xxx/public_docker:nginx-v1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佛猛,一起剝皮案震驚了整個濱河市惑芭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌继找,老刑警劉巖遂跟,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異婴渡,居然都是意外死亡幻锁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門边臼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來越败,“玉大人,你說我怎么就攤上這事硼瓣。” “怎么了置谦?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵堂鲤,是天一觀的道長。 經(jīng)常有香客問我媒峡,道長瘟栖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任谅阿,我火速辦了婚禮半哟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘签餐。我一直安慰自己寓涨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布氯檐。 她就那樣靜靜地躺著戒良,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冠摄。 梳的紋絲不亂的頭發(fā)上糯崎,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天几缭,我揣著相機與錄音,去河邊找鬼沃呢。 笑死年栓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的薄霜。 我是一名探鬼主播某抓,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼黄锤!你這毒婦竟也來了搪缨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤鸵熟,失蹤者是張志新(化名)和其女友劉穎副编,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體流强,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡痹届,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了打月。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片队腐。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奏篙,靈堂內(nèi)的尸體忽然破棺而出柴淘,到底是詐尸還是另有隱情,我是刑警寧澤秘通,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布为严,位于F島的核電站,受9級特大地震影響肺稀,放射性物質(zhì)發(fā)生泄漏第股。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一话原、第九天 我趴在偏房一處隱蔽的房頂上張望夕吻。 院中可真熱鬧,春花似錦繁仁、人聲如沸涉馅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽控漠。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盐捷,已是汗流浹背偶翅。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留碉渡,地道東北人聚谁。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像滞诺,于是被迫代替她去往敵國和親形导。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351