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镜像的多平台架构支持相关推荐

  1. 基于微服务和Docker的PaaS云平台架构设计

    基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...

  2. 5分钟将Docker镜像部署到SAP云平台CloudFoundry

    一键部署Docker镜像到SAP CloudFoundry 阅读这篇blog大约需要5分钟 Docker 是世界领先的软件容器平台.DockerHub 是一个由 Docker 公司运行和管理的基于云的 ...

  3. 基于微服务和Docker容器技术的PaaS云平台架构设计

    本文讲的是基于微服务和Docker容器技术的PaaS云平台架构设计[编者的话]在系统架构上,PaaS云平台主要分为微服务架构.Docker容器技术.DveOps三部分,这篇文章重点介绍微服务架构的实施 ...

  4. 构建多平台Docker镜像

    利用 Docker 19.03 以上版本引入的插件 buildx[4],可以很轻松地构建多平台 Docker 镜像.buildx 是 docker build ... 命令的下一代替代品,它利用 Bu ...

  5. 基于Docker的CaaS容器云平台架构设计及市场分析

    基于Docker的CaaS容器云平台架构设计及市场分析 1 项目背景-概述: "在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将 ...

  6. docker使用buildx构建不同架构镜像

    启用 buildx 插件 要想使用 buildx,首先要确保 Docker 版本不低于 19.03,同时还要通过设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用.可以通过下面的命令 ...

  7. Docker 开启 buildx 多CPU架构镜像制作

    Docker开启buildx多CPU架构镜像制作 buildx简介 关于QEMU 系统限制 查看Linux内核版本 查看Docker版本 Docker开启实验特性 启用 binfmt_misc 来运行 ...

  8. ARM架构Docker镜像构建-基础知识

    介绍ARM版本的Docker镜像的构建,包括ARM机器上Docker的安装,在ARM机器上构建镜像,及在amd64机器上使用buildx交叉构建arm版本镜像. 前言 现在很多地方都对服务的国产化适配 ...

  9. Spring Boot 2.3.0 发布:支持Java14、打包Docker镜像、优雅关机配置...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 冷冷gg 来源 | https://www.oschin ...

最新文章

  1. R学习笔记之五:数据操作
  2. nor flash 和nand flash 的区别
  3. es index 改名_Elasticsearch Index模块
  4. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试
  5. R 统计学工具部署和使用
  6. 【转】AB实验设计思路及实验落地
  7. springboot整合redis,推荐整合和使用案例(2021版)
  8. access游戏库不显示 ea_EAAccess服务Steam平台售价一览 EAAccess服务常见问题解答
  9. hbase源码系列(八)从Snapshot恢复表
  10. 脏检查 和 缓存清理机制
  11. RocketMQ中的autoCreateTopicEnable是如何实现自动创建topic?
  12. sqlyog与mysql编码语法_如何解决sqlyog连接的数据库乱码的问题
  13. 淘宝logo设计遇到的坑
  14. 空气温湿度光照度传感器
  15. 获取SD卡序列号和厂商ID
  16. 深度CTR之AFM:基于Attention网络的FM模型
  17. 用卷积神经网络实现对小狗品种的识别
  18. 罗马数字 古罗马数字转换为阿拉伯数字
  19. CSCAD AutoCAD 修改光标颜色
  20. 火影忍者疾风传720集视频

热门文章

  1. 年度调薪一般涨多少_又到年底,HR 你拿什么标准来调薪?
  2. 【原】postman常用设置全局变量的js片段
  3. python读取excel,数字都是浮点型,日期格式是数字的解决办法
  4. Quartz Job scheduling 基础实现代码
  5. 译注(3): NULL-计算机科学上最糟糕的失误
  6. js Math用法jquery是否为空对象判断
  7. HDU3247 Resource Archiver(AC自动机+BFS+DP)
  8. 我所理解的IRepository
  9. 设置ComboBox控件的小箭头颜色.
  10. qt-重写event(),事件过滤器,定时器,事件总结