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