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