Docker镜像的多平台架构支持
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
Docker 官方鏡像現(xiàn)在支持多平臺(tái)架構(gòu)
Docker Engine在2017年取得了很大的進(jìn)展,社區(qū)版和企業(yè)版進(jìn)行分開,支持OCI和containerD提高開放性和并行服務(wù)的性能,在ARM和ARM64上的版本已經(jīng)跟上了主版本。Docker在多個(gè)操作系統(tǒng)和硬件環(huán)境的支持使鏡像的多平臺(tái)支持需求變得迫切起來。
過去的幾周, Docker 的 Official Images 放出了一些大的更新,使其支持多平臺(tái)架構(gòu)的感知。現(xiàn)在, 當(dāng)你運(yùn)行 docker run hello-world, Docker CE 和 EE 將 pull 和 run 正確的 hello-world image 版本,無論是運(yùn)行 x86-64 Linux, Windows, ARM, IBM Z mainframes 或者其他Docker支持的系統(tǒng)。為了給Docker 加上更多的操作系統(tǒng) (like Windows) 和 CPU architectures (like IBM Z) 的支持,這里有一些重大的改進(jìn)。
1、原來的機(jī)制
Docker Official Images 是一系列基礎(chǔ)鏡像的集合:
- 基礎(chǔ)操作系統(tǒng)的鏡像,如 Ubuntu, BusyBox 和 Debian
- 開箱即用的編程語言和開發(fā)環(huán)境,如 Go, Python 和 Java
- 易于使用的數(shù)據(jù)存儲(chǔ)系統(tǒng),如 PostgreSQL, Neo4j 和 Redis
- 打好包的應(yīng)用軟件,如 WordPress, Ghost 和 Redmine 一起很多其它開源軟件項(xiàng)目。
Docker的 x86-64 Linux鏡像一直可用。對(duì)非 x86 Linux architectures 也可以使用,但是采用不同的命名空間 (docker pull s390x/golang 用于 IBM Z mainframe) 或者采用不同的 tag (docker pull golang:nanoserver 用于 Windows). 這會(huì)影響無縫操作和遷移的體驗(yàn),我們希望通過 multi-arch and and multi-os orchestration 特征給用戶更好的體驗(yàn)。
2、統(tǒng)一的方法
幸運(yùn)的是, Docker registry 和 distribution protocol 已經(jīng)自 Docker 1.10就支持多平臺(tái)架構(gòu), 使用 manifest lists 技術(shù). 一個(gè) manifest list 可以在registry里描述一種架構(gòu)的鏡像(例如 golang) ,同時(shí)包含一個(gè)列表,包含 (“platform”, “manifest-reference”) 元組. 如果registry響應(yīng) docker pull 命令不是 image manifest里的, Docker 檢查manifest list 然后 pull該平臺(tái)對(duì)應(yīng)的 list entry然后再運(yùn)行。
distribution protocol 是后向兼容的,? manifest lists 只服務(wù)于指明了支持 Accept header的客戶端。對(duì)于不支持 manifest lists的客戶端, registries 將會(huì)返回給 x86-64 Linux image manifest. Manifest lists 通過 Docker Content Trust 支持全部特征,確保 multi-platform image 內(nèi)容被加密驗(yàn)證和檢驗(yàn)。
Manifest lists 以及覆蓋Linux images下的大部分CPU架構(gòu), 對(duì) Windows的支持也正在進(jìn)行. 如果你喜歡用的 CPU 架構(gòu)和 OS還沒有被支持, 你可以繼續(xù)使用 CPU或OS的標(biāo)簽來區(qū)分鏡像。
3、創(chuàng)建新鏡像
如果對(duì)創(chuàng)建支持多平臺(tái)鏡像感興趣,請(qǐng)查看 Phil Estes’?manifest-list tool ,以及關(guān)注 PR to add a manifest command to the Docker CLI.
Manifest lists 和 multi-arch Docker images 的工作已經(jīng)進(jìn)行了很長(zhǎng)時(shí)間. 我們很高興這個(gè)特征讓使用Docker官方鏡像變得更加簡(jiǎn)單,讓Docker的在多個(gè)支持的平臺(tái)上運(yùn)行能夠更加無縫地切換。
4、更多資源
- Phil Estes’?and Utz Bacher’s?posts on Official Images going multi-arch
- Official Repo documentation
- Details on multi-arch official images
- Official Repo GitHub org
- Manifest-list specification
原文(英):https://blog.docker.com/2017/09/docker-official-images-now-multi-platform/
轉(zhuǎn)載于:https://my.oschina.net/u/2306127/blog/1593636
總結(jié)
以上是生活随笔為你收集整理的Docker镜像的多平台架构支持的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酷狗音乐怎么设置循环播放
- 下一篇: linux - python