【译】OCI镜像规范项目正式启动,致力于容器镜像标准的统一

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

声明:本文为InfoQ中文站特供稿件,首发地址为:OCI镜像规范项目正式启动,致力于容器镜像标准的统一


今天,我们迎来开放容器倡议(OCI)的新项目,OCI镜像规范。这意味着有一个在业界达成共识的项目,并且依靠着整个业界的强大技术实力,去规范和制定容器的构建、核实、签名以及命名标准。

在这个项目接下来几个月中,用户有望迎来一个行业标准镜像规范,服务于创建和交付容器。如果你正在使用appc或Docker镜像,你并不需要作出太多改变。不过,这将是行业在实现“一次打包,多次运行”容器的愿景上的一大进步。2016年,用户可以期待在容器存储、构建、运行时的更多协同性和创新性。

OCI的第一个项目OCI运行时规范规定了如何去运行容器。现在OCI的目标是在这个规范的基础上,增添一个新的OCI镜像格式规范——容器镜像的开放规范、容器运行软件的构建规范。在过去的16个月中,Docker已经将appc规范的许多特性 纳入其镜像格式中。OCI镜像规范项目以Docker v2.2作为起始版本。这样可以以最小的工作量来将镜像格式最终变成一致。不久之后Docker和rkt将支持一个统一的,由OCI规定的标准镜像格式。

促进行业统一

首先,让我们回顾CoreOS的CEO Alex Polvi的博文:OCI工程的历史。OCI项目起始于2015年夏天,当时的开发聚焦于容器的执行环境。而在今天,我们非常激动地启动了OCI镜像格式规范项目。该项目将专注于容器标准中最关键、最基础的组件:可分发的容器镜像。这份开放容器镜像格式规范加固了容器的可移植性目标,允许用户构建和打包、签名容器一次,就可以在各个厂商的平台上运行,不论是云环境还是私有环境。

下列是一份OCI镜像规范的祖先模块,以及它们的特点和历史:

DOCKER V1 APPC DOCKER V2.2 OCI IMAGE
Introduced 2013 Dec 2014 Apr 2015 Apr 2016
Feaderated namespace Yes Yes Yes Yes
Content-addressable No Yes Yes Yes
Sinable No Yes,Optional Yes,Optional Yes,Optional
Delegatable DNS namespace No Yes No Yes

有哪些参与者?

OCI镜像格式规范的初始维护者是appc规范的的维护者、Docker镜像格式的开发者和其他应用容器团队的著名成员:

  • Vincent Batts, Red Hat
  • Jonathan Boulle, CoreOS
  • Jason Bouzane, Google
  • Brendan Burns, Google
  • Stephen Day, Docker
  • Brandon Philips, CoreOS
  • John Starks, Microsoft

OCI和镜像规范项目欢迎社区参与,过一段时间我们会根据社区的活跃度增加更多的维护者。

容器镜像是什么?

从一个比较高的层面去看,容器镜像包含了运行一个软件所需要的所有元素。现在的开发者使用一些工具构建容器镜像,例如Dockerfile、acbuilddgr或传统的脚本语言。通过上述工具可以生成一份或多份文件,这些文件可以上传到互联网。那些需要运行这些软件的人可以通过指定名称(如example.com/my-app)下载、验证和运行容器。

OCI规范对容器的使用者有什么意义?

OCI镜像规范的目标是:允许开发者只要对容器打包和签名一次,就可以在所有的容器引擎上运行该容器。这意味着开发团队可以根据自己的需要选择构建工具和扩展语法。随着一个所有人都可以参与和实现的容器镜像规范的确立,很多容器不经过修改就可以运行在大部分容器运行平台上,例如rkt、Docker、Kubernetes和Amazon ECS。这对于准备在现代IT架构上持续投入的用户来说是极大的进步。

考虑到开放容器提案广泛的行业参与性,我们希望Quay、Amazon Container Registry、Google Container Registry和Docker Hub这些仓库都可以支持OCI镜像格式。名称委托(name delegation)提高的容器可移植性,使得某个容器对很多容器仓库可用。如果这些容器仓库可以支持通用的OCI镜像格式,将极大得提高容器的移动和可替代性,而且不需要关心多种打包过程和打包格式。

rtk和Quay将会支持新的OCI镜像规范

迄今为止,Quay容器仓库rtk容器运行时支持Docker镜像格式和appc镜像格式。我们将持续维护以保证向下兼容,使得已经投入时间和培训的用户可以继续管理、存储和运行这些Quay和rtk格式的容器镜像。

随着OCI格式的成熟,我们将在OCI镜像规范中添加对现有格式的支持。根据目前OCI镜像规范的发展规划,这些将在未来的几个月中成为现实。我们希望OCI镜像格式能很快成为行业的唯一标准,以构建、存储和部署运行时产品。

由于这些成果结合了app镜像格式和Docker v2.2镜像中最好的部分,我们希望能够快速指定和实现新的OCI镜像格式。在我们向着应用容器镜像(GIFEE的基础构建模块)的标准化努力时,我们非常欢迎你们的帮助和支持。GIFEE指的是Google Infrastructure For Everyone Else。

如何做出贡献?

我们希望通过制定容器镜像的标准,使得容器行业的茁壮成长。如果你有兴趣支持这份事业,你可以向rtk或者Clair等开源项目提交修改以让它们支持OCI规范;你可以告诉云计算服务商自己希望他们支持OCI镜像规范;或者你可以直接参与到OCI规范项目本身。这是关键的一步,最好的方法就是集合整个行业的力量一起推动容器标准化。

查看英文原文:Celebrating the Open Container Initiative Image Specification



相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
305 5
|
3月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
264 16
|
3月前
|
Ubuntu 网络安全 PHP
如何使用vscode的Docker插件管理ubuntu 拉取服务器的镜像以及创建容器
本测试镜像旨在记录使用vscode的Docker插件拉取病创建Dockerfile,以及拉取镜像。
|
6月前
|
关系型数据库 MySQL Docker
|
10月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
560 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
11月前
|
关系型数据库 应用服务中间件 PHP
实战~如何组织一个多容器项目docker-compose
本文介绍了如何使用Docker搭建Nginx、PHP和MySQL的环境。首先启动Nginx容器并查看IP地址,接着启动Alpine容器并安装curl测试连通性。通过`--link`方式或`docker-compose`配置文件实现服务间的通信。最后展示了Nginx配置文件和PHP代码示例,验证了各服务的正常运行。
286 3
实战~如何组织一个多容器项目docker-compose
|
12月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
1966 10
|
存储 数据库 Docker
正确删除容器和镜像的方式
【10月更文挑战第24天】本文介绍了在Docker中如何正确删除容器和镜像,包括停止容器、删除已停止容器、删除未被使用的镜像以及注意事项,如数据备份、依赖关系检查和权限问题。其他容器管理工具的操作类似,但命令和语法可能不同。
2829 4
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
人工智能 Anolis 开发者

相关产品

  • 容器镜像服务