過去一周,Docker的官方鏡像推出了重大更新,針對多平臺的容器鏡像。現(xiàn)在當(dāng)你運行docker run hello-world,此時Docker CE和EE將運行hello-world鏡像,無論是用于x86-64的Linux,Windows,ARM,IBM Z大機(jī)或可運行Docker的任何其他系統(tǒng)。Docker快速增加對其他操作系統(tǒng)(如Windows)和CPU架構(gòu)(如IBM Z)的支持,這是一項重要的UX改進(jìn)。
▲
Docker官方鏡像是容器鏡像,包括:
基本的操作系統(tǒng)鏡像,如Ubuntu,BusyBox和Debian。隨時可用的,用于流行的編程語言,如Go,Python和Java的構(gòu)建和運行的鏡像。
數(shù)據(jù)存儲易于使用的鏡像,如PostgreSQL,Neo4j和Redis。
預(yù)先打包的軟件鏡像,用戶WordPress,Ghost和Redmine等許多流行的開源項目。
https://github.com/docker-library/official-images#architectures-other-than-amd64
官方鏡像一直可用于x86-64 Linux。非x86 Linux架構(gòu)的鏡像也可以使用,但是要從不同的命名空間(在IBM Z大機(jī)上Docker pull s390x / golang)或使用不同的標(biāo)簽(在Windows上docker pull golang:nanoserver)獲取。顯然這不是為使用Docker的用戶,所提供的新的多架構(gòu)和多操作系統(tǒng)編排功能的無縫和便攜體驗。
編排功能:https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list
幸運的是Docker注冊表和分發(fā)協(xié)議支持多平臺映像,因為Docker 1.10使用了名為manifest列表的技術(shù)。清單列表可以在注冊表(例如golang)中替代單架構(gòu)鏡像清單,并包含(“platform”,“manifest-reference”)元組的列表。如果注冊表使用注冊表列表而不是鏡像清單來響應(yīng)docker pull命令,Docker會檢查清單列表,然后為正在運行的平臺提取正確的列表條目。
分發(fā)協(xié)議是向后兼容的,并且清單列表僅提供給表示在Accept標(biāo)頭中的支持的客戶端。對于不支持清單列表的客戶端,注冊表將返回到x86-64 Linux鏡像清單。Docker Content Trust完全支持清單列表,以確保對多平臺鏡像內(nèi)容進(jìn)行加密簽名和驗證。
清單列表已經(jīng)支持大多數(shù)的CPU架構(gòu)的Linux鏡像,現(xiàn)在也支持Windows了。如果你最喜歡的CPU架構(gòu)或操作系統(tǒng)尚未覆蓋,則可以隨時繼續(xù)使用CPU或操作系統(tǒng)特定的標(biāo)簽或鏡像。
如果有興趣構(gòu)建多架構(gòu)鏡像,請查看Github清單列表工具,并長期跟蹤C(jī)LI存儲庫,并向Docker CLI添加清單命令。
清單列表工具:https://github.com/estesp/manifest-tool
CLI存儲庫:https://github.com/docker/cli/pull/138