红帽发布多容器应用规范Nulecule

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文讲的是红帽发布多容器应用规范Nulecule,【编者的话】这篇文章简单的介绍了Nulecule的产生、特性以及目标, Nulecule致力于构建一个统一的复合应用(基于多容器)的描述规范。笔者认为想法很好,但是要想实现这一目标不仅仅是一个技术问题,更多的是需要实现各个容器厂商的利益均衡,而做到这一点并不那么容易。
本文讲的是红帽发布多容器应用规范Nulecule 【编者的话】这篇文章简单的介绍了Nulecule的产生、特性以及目标, Nulecule致力于构建一个统一的复合应用(基于多容器)的描述规范。笔者认为想法很好,但是要想实现这一目标不仅仅是一个技术问题,更多的是需要实现各个容器厂商的利益均衡,而做到这一点并不那么容易。不过还是应该肯定Project Atomic为此所做的事情。

为了帮助开发和管理人员创建和启动多容器组合的应用, Project Atomic 的童鞋们正在起草一份与平台无关的规范,叫做Nulecule(noo-le-kyul)。你可以在 RHEL博客中 找到关于此方案的完整解释以及我们的解决方案。

我们也已经创建了一个叫做 Atomic App 的应用,可以帮助我们运行使用Nulecule规范的应用。如果你想尝试一下,可以从那些链接中获取更多的信息。

QQ截图20150525210456.png


那我们为什么要做这件事情了?因为容器正在重塑IT版图,并且很快就会颠覆之前那些根深蒂固的技术。这是件好事,因为它确实可以解决很多的问题。但是容器的生态系统并不完善,毕竟它才刚刚开始发展。现在仍然还有很多挑战,但是每个挑战都是一个机会。既然如此,这里就有这样一个机会:构建应用的可管理性,并且创建一个标准化的方法使得可扩展的、复合(composite)应用配置变的更容易。

在这次IT技术的演进过程中,我们遵循的是“MYSM(make your stuff manageable)”,就是“让你的东西可以管理”。Linux以及其它的一些组件组合而成的LAMP堆栈构建了一个非常大的开源软件生态系统。但是他们在可管理性方面还是做的不够,这也为各种各样的配置管理工具创造了机会。Java程序员总是对LAMP开发者不太满意,不断提醒他们缺少与管理工具的整合。不幸的是尝到了JMX以及WAR文件轻松部署带来的可管理性甜头之后,你不得不强迫自己去学习Java框架。那么玩开源的开发者应该怎么办?

其中一个答案就是把应用容器化,从而你可以独立的开发和更新应用的各个组件。但是,管理单个容器相对容易,而管理多个容器就比较困难了。这也正是Nulecule存在的意义。

Nulecule定义了一个模式(pattern)和模型(model)来打包复杂的多容器应用,所有的依赖,包括编排的元数据(orcherstration metadata),都会在一个容器镜像中构建、部署、监控以及管理。只要创建一个拥有Nulecule文件的容器,应用就可以运行了。在Nulecule规范中,你要在一个图中定义编排提供者、容器位置和配置参数,Atomic App在Kubernetes和Docker的帮助下会把他们拼凑到一起。Nulecule规范还支持多个复合应用的整合,它不绑定任何的容器以及编排工具,你可以使用任何容器和编排工具引擎。

Nulecule规范亮点:
  • 可以在一个容器中通过可扩展的元数据来维护应用描述和上下文
  • 可以通过继承来定义复杂应用,这些容器的组合定义都会放到一个单一的、标准的、轻便的描述中
  • 通过一个有向图来反应依赖之间的关系以简化复杂应用的依赖管理
  • 对容器和编排引擎不可知,可以使用任何的引擎和编排技术

我希望你使用我们的规范和实现,然后告诉我们,特别是跟其它实现一起工作时的缺陷,我们很想知道这些。因为我们真的想为开发者、工具创建者以及管理框架找到一个好的解决方案。理想地说,Nulecule将会涉及开发和运维两方面的工具。从运维方面来说有,Apache CloudStack、OpenStack、ManageIQ以及Ansible。从开发者方面来说有Visual Studio、Docker Compose、OpenShift和Eclipse。

考虑到现在有很多流行的容器格式、编排引擎和策略(Policy)管理工具,我想我们应该使用统一的定义和语言来描述复合应用。很明显,未来将会出现很多的多容器应用框架。如果他们使用同样的语言,那将会极大的简化开发者和运维人员的工作。

我们创建了 一些例子 来帮助你开始。第一个,也是最简单的例子叫做 helloapache 。它是一个基于centos/httpd镜像的单个pod,但要使用它,你需要一个拥有Atomic CLI和kubectl的机器。 实例录像

这里还有个复杂点的例子,展示了如何使用Docker部署OpenStack,以及使用answerfile.conf实现自动安装。 实例录像

另外一个例子是展示如何使用Atomic App、Docker和Kubernetes部署一个链接在一起的复合应用。 示例录像

我们在很短的时间内取得了很大的突破,但是接下来还有很多事情要做。我们非常激动可以分享我们到目前为止的工作,并且期望与大的社区合作,一起开发Nulecule,使得复杂容器化应用部署变得更简单容易。

原文链接:Announcing the Nulecule Specification for Composite Applications (翻译:左伟 校对:李颖杰)

===========================
译者介绍
左伟,就职于IBM,软件工程师,现从事于DevOps,云计算相关的研究,实现和推广。

原文发布时间为: 2015-05-25
本文作者:左伟 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:红帽发布多容器应用规范Nulecule
目录
相关文章
|
4天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
4天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
4天前
|
存储 安全 数据库
【Docker 专栏】Docker 容器内应用的状态持久化
【5月更文挑战第9天】本文探讨了Docker容器中应用状态持久化的重要性,包括数据保护、应用可用性和历史记录保存。主要持久化方法有数据卷、绑定挂载和外部存储服务。数据卷是推荐手段,可通过`docker volume create`命令创建并挂载。绑定挂载需注意权限和路径一致性。利用外部存储如数据库和云服务可应对复杂需求。最佳实践包括规划存储策略、定期备份和测试验证。随着技术发展,未来将有更智能的持久化解决方案。
【Docker 专栏】Docker 容器内应用的状态持久化
|
5天前
|
存储 Prometheus 监控
【Docker 专栏】Docker 容器内应用的调试与故障排除
【5月更文挑战第8天】本文探讨了Docker容器内应用的调试与故障排除,强调其重要性。方法包括:通过日志排查、进入容器检查、使用监控工具及检查容器配置。常见问题涉及应用启动失败、性能问题、网络连接和数据存储。案例分析展示了实战场景,注意事项提醒避免不必要的容器修改、备份数据和理解应用架构。掌握这些技能能确保Docker应用的稳定运行和性能优化。
【Docker 专栏】Docker 容器内应用的调试与故障排除
|
6天前
|
前端开发 API 数据库
【Docker专栏】Docker Compose实战:编排多容器应用
【5月更文挑战第7天】Docker Compose是Docker的多容器管理工具,通过YAML文件简化多容器应用部署。它能一键启动、停止服务,保证开发、测试和生产环境的一致性。安装后,创建`docker-compose.yml`文件定义服务,如示例中的web和db服务。使用`docker-compose up -d`启动服务,通过`docker-compose ps`、`stop`、`down`和`logs`命令管理服务。
【Docker专栏】Docker Compose实战:编排多容器应用
|
6天前
|
监控 安全 数据库
【Docker专栏】Docker容器化应用的最佳实践
【5月更文挑战第7天】本文介绍了 Docker 容器化应用的关键最佳实践,包括使用官方基础镜像、保持镜像精简、以非 root 用户运行容器、安全扫描、编写高效 Dockerfile、环境隔离、使用数据卷、选择合适网络模式、设置资源限制、使用版本标签、容器编排以及文档和自动化部署。遵循这些实践可提升效率和安全性,同时要注意随着技术发展不断更新知识。
【Docker专栏】Docker容器化应用的最佳实践
|
12天前
|
中间件 Linux API
容器改造传统应用的流程
【5月更文挑战第1天】如何评估和执行将传统应用进行Docker化改造的过程。
|
14天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云函数计算中,容器运行过程中的最大内存使用量获取如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
35 2
|
14天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在Serverless应用引擎(SAE)中,在创建ALB时找不到对应的SAE容器如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
21 0
|
14天前
|
运维 监控 Linux
【专栏】Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用
【4月更文挑战第28天】本文介绍了Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用。通过基础和高级用法示例,如列出所有容器、搜索特定镜像、监控资源使用等,帮助读者理解和提升容器管理效率。对于Linux运维工程师,掌握`docker ps`是必备技能。