Docker镜像的多平台架构支持

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 是一系列基础镜像的集合:

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、更多资源

原文(英):https://blog.docker.com/2017/09/docker-official-images-now-multi-platform/

转载于:https://my.oschina.net/u/2306127/blog/1593636

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值