开源应用 Docker App 加入 CNAB 规范,实现云原生应用的统一管理

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
可观测监控 Prometheus 版,每月50GB免费额度
简介: Docker App 是我们在2018 DockerCon 美国大会上简要介绍的一款新工具。我们一直致力于“Docker APP”的开发,使容器应用程序更易于在不同团队和不同环境之间共享和管理......

screenshot

出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五,与您不见不散!


Docker App 是我们在2018 DockerCon 美国大会上简要介绍的一款新工具。我们一直致力于“Docker APP”的开发,使容器应用程序更易于在不同团队和不同环境之间共享和管理,我们还将其进行开源处理,这样您就可以从 GitHub 下载 Docker APP 了,浏览 https://github.com/docker/app 下载 Docker APP 源码。


当我们与其他人谈论分享与合作这个问题时,我们开始意识到,这是一个其他人也在为之努力的普遍问题。这就是为什么我们很高兴与微软在全新的 Cloud Native Application Bundle(CNAB)规范上进行合作的原因。

screenshot

如今的云原生应用程序通常会使用不同的技术,每个技术都有自己的工具链。也许您正在使用 ARM 模板和 Helm 图表,或在使用 CloudFormation 和 Compose,亦或是 Terraform 和 Ansible。但是,市场上没有单一的解决方案来定义和打包这些多服务、多格式的分布式应用程序。


CNAB 是一个开源的、与云无关的规范,用于打包和运行分布式应用程序,旨在解决其中的存在的问题。CNAB 将跨不同工具链的多服务分布式应用程序的管理统一为一种单一的、一体化的打包格式。

screenshot

CNAB 规范的更多详情可以在 cnab.io 上找到,我们正在积极寻找有兴趣参与规范的人们,以及有兴趣围绕规范构建工具的人们。Docker App 的最新版本就是一个实现当前 CNAB 规范的工具。这意味着它既可以为 Compose 构建 CNAB 包(可以与任何其他 CNAB 客户端一起使用),也可以安装、升级和卸载任何其他 CNAB 包。


在 Docker Hub 上共享 CNAB 包

单独的 Compose 文件的局限在于它们无法在 Docker Hub 或 Docker Trusted Registry 上进行共享。Docker App 很好的解决了这个问题。这是一个简单的 Docker 应用程序,它启动了一个非常简单的 Prometheus 应用栈:

version: 0.1.0
name: monitoring
description: A basic prometheus stack
maintainers:
 - name: Gareth Rushgrove
   email: garethr@docker.com
---
version: '3.7'
 
services:
 prometheus:
   image: prom/prometheus:${versions.prometheus}
   ports:
     - ${ports.prometheus}:9090
 
 alertmanager:
   image: prom/alertmanager:${versions.alertmanager}
   ports:
     - ${ports.alertmanager}:9093
---
 
ports:
   prometheus: 9090
   alertmanager: 9093
versions:
   prometheus: latest
   alertmanager: latest

保存为“monitoring.dockerapp”后,我们就可以构建一个 CNAB 包并在 Docker Hub 上共享它。

$ docker-app push --namespace

现在在另一台机器上,我们仍然可以与共享应用程序进行交互。 例如,让我们使用“inspect”命令来获取有关我们应用程序的信息:

$ docker-app inspect/monitoring:0.1.0
monitoring 0.1.0
 
Maintained by: Gareth Rushgrove
 
A basic prometheus stack
 
Services (2) Replicas Ports Image
------------ -------- ----- -----
prometheus  1    9090 prom/prometheus:latest
alertmanager 1       9093 prom/alertmanager:latest
 
Parameters (4)       Value
--------------       -----
ports.alertmanager   9093
ports.prometheus     9090
versions.alertmanager latest
versions.prometheus  latest

Compose 文件中的所有信息都存储在 Docker Hub 上的 CNAB 包中。您可能注意到了,它也是参数化的,因此可以在运行时替换它的值来满足部署要求。我们也可以直接从 Docker Hub 安装应用程序。

docker-app install/monitoring:0.1.0 --set ports.alertmanager=9095

使用 Docker App 安装 Helm 图表

到目前为止,存在一个问题,那就是“docker-app”和现在的 CNAB 包如何与 Helm 图表相关联呢?好消息是他们可以很好地进行关联!下面是一个使用“docker-app”和 CNAB 包来安装 Helm 图表的示例。(注:以下示例使用的是 CNAB 示例包中的“hellohelm”示例。)

$ docker-app install -c local bundle.json
Do install for hellohelm
helm install --namespace hellohelm -n hellohelm /cnab/app/charts/alpine
NAME:  hellohelm
LAST DEPLOYED: Wed Nov 28 13:58:22 2018
NAMESPACE: hellohelm
STATUS: DEPLOYED
 
RESOURCES:
==> v1/Pod
NAME             AGE
hellohelm-alpine 0s

下一步!

如果您想开始使用 Docker App 构建应用程序,那么您可以从 github.com/docker/app 下载最新版本,并查看资源库中提供的一些示例。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
1天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
14天前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
9天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
29 4
|
18天前
|
Kubernetes Cloud Native 开发者
云原生入门:从Docker到Kubernetes的旅程
【9月更文挑战第16天】 本文将带你进入云原生的世界,从理解Docker容器的基础开始,逐步深入到Kubernetes集群管理。我们将通过简单的代码示例和实际操作,探索这两个关键技术如何协同工作,以实现更高效、灵活的应用程序部署和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供清晰的指导和实用的知识。
51 11
|
1月前
|
关系型数据库 分布式数据库 数据库
开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布
PolarDB进行了深度的内核优化,从而实现以更低的成本提供商业数据库的性能。
|
1月前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
2月前
|
Kubernetes Cloud Native 开发者
探索云原生技术:从Docker到Kubernetes的旅程
【8月更文挑战第31天】云原生技术正在改变软件开发、部署和运维的方式。本文将带你了解云原生的核心概念,并通过实际代码示例,展示如何使用Docker容器化应用,并进一步通过Kubernetes进行集群管理。我们将一起构建一个简单的微服务架构,体验云原生带来的高效与便捷。
|
2月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【8月更文挑战第31天】 在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本文将引导读者理解云原生的基本概念,通过Docker和Kubernetes的实际应用示例,展示如何在云平台上部署和管理容器化应用。我们将一起探索服务编排、持续集成和微服务架构的实践之路,旨在为初学者揭开云原生技术的神秘面纱,并激发对这一前沿领域的深入探索。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【8月更文挑战第31天】 在云原生的世界里,容器技术是基石。本文将带你了解如何通过Kubernetes和Docker这两个强大的工具,搭建起你的云原生应用架构。我们将一起探索它们如何相互配合,提升开发与运维的效率。准备好了吗?让我们启航,探索云原生的奥秘!
下一篇
无影云桌面