出品丨 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) 规范上进行合作的原因.
如今的云原生应用程序通常会使用不同的技术, 每个技术都有自己的工具链. 也许您正在使用 ARM 模板和 Helm 图表, 或在使用 CloudFormation 和 Compose, 亦或是 Terraform 和 Ansible. 但是, 市场上没有单一的解决方案来定义和打包这些多服务, 多格式的分布式应用程序.
CNAB 是一个开源的, 与云无关的规范, 用于打包和运行分布式应用程序, 旨在解决其中的存在的问题. CNAB 将跨不同工具链的多服务分布式应用程序的管理统一为一种单一的, 一体化的打包格式.
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 下载最新版本, 并查看资源库中提供的一些示例.
来源: https://yq.aliyun.com/articles/679364