Docker Compose和Kubernetes有什么区别?
Docker Compose和Kubernetes有什么区别?
在深入学习Docker、Google Cloud和Kubernetes时,尽管我还没有完全理解它们三者的关系,但它们似乎有重叠之处,却不兼容。例如,需要重新编写docker-compose.yml
文件才能将应用程序部署到Kubernetes中。有人能够提供高层次、大致的描述,说明Docker、Docker Compose、Docker Cloud和Kubernetes之间的重叠和依赖关系吗?
除了 @yamenk 的答案之外,我想在这里添加一些细节,这些细节可能有助于人们了解 Kubernetes。
简短的回答:
docker-compose
:是一个工具,它接受描述您的多容器应用程序的 YAML 文件,并帮助您创建、启动/停止、删除所有这些容器,而不必为每个容器键入多个docker ...
命令。Kubernetes
:是一个用于管理容器化工作负载和服务的平台,既支持声明式配置,又支持自动化。是什么? 继续阅读...
Docker Compose
(来自文档):Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件配置您的应用程序的服务。然后,使用单个命令,您可以根据配置创建并启动所有服务。
Compose 具有用于管理应用程序整个生命周期的命令:
- 启动、停止和重新构建服务
- 查看正在运行服务的状态
- 流式传输正在运行服务的日志输出
- 在服务上运行一次性命令
Kubernetes
(来自Kubernetes 简介):Kubernetes 是一个容器编排器,就像 Docker Swarm、Mesos Marathon、Amazon ECS、Hashicorp Nomad。容器编排器是将主机组成集群的工具,帮助我们确保应用程序:
- 具有容错能力,
- 能够按需扩展
- 充分利用资源
- 能够自动发现其他应用程序,并相互通信
- 能够从外部世界访问
- 可以在没有任何停机时间的情况下更新/回滚。
许多人认为Kubernetes很难学。这是因为它解决了一系列的问题,并且人们在不知道所有先决条件的情况下尝试理解。这让它变得复杂。通过阅读以下概念/术语,开始将拼图的各个部分放在一起,这个过程将帮助你理解Kubernetes尝试解决的问题类型:
- 12因素应用程序,
- 自动的绑定,
- 自我修复机制,
- 水平扩展,
- 服务发现和负载均衡,
- 自动部署和回滚
- 蓝绿部署/金丝雀部署
- 机密和配置管理,
- 存储编排
由于容器和其管理有许多不同的事情,因此要关注云本地景观:
交互式版在此处:landscape.cncf.io/
更新
2020年5月:Docker Compose规范现在是一个开放标准
与AWS、微软和其他开源社区合作,我们扩展了Compose规范,以支持诸如Kubernetes和Amazon ECS之类的云本地平台,除了现有的Compose平台。更多信息请参见:博客 / compose-spec.io
请忽略本文,因为本文为空。