Kubernetes 和 Docker 之间有什么区别?
Docker 是一种容器运行时技术,相比于传统方法,可更快地构建、测试和部署应用程序。该技术将软件打包成名为容器的标准化单元,这些单元具有运行软件所需的所有功能,包括库、系统工具和代码。Kubernetes 是一种容器编排工具,让您可以扩展您的容器系统,以便大规模地管理、协调与调度容器。
Kubernetes 和 Docker 用于何处?
Kubernetes 和 Docker 两者都是容器技术。现代应用程序都由微服务组成;这些微服务是独立的组件,会将每个应用程序进程作为一项服务运行。每项服务都会执行一项功能,并通过明确定义的接口,即 API,与其他服务进行通信。容器化提供软件工具,可将微服务打包为不同平台上的可部署程序。
创建容器
Docker 是在近几年深受人们欢迎的开源容器运行时。它提供可用于轻松且高效创建容器的工具包。开发人员要运行命令来建立容器映像文件,其中包含每项微服务所需的系统库、工具、代码和其他软件配置。每项微服务有自己的 Docker 映像。您可以使用 Docker 映像在任何环境中运行微服务。
管理容器
大多数应用程序由多项微服务组成。其中一部分可以扩展至数千项跨不同服务器运行的微服务。多容器应用程序会带来新的管理挑战:
- 您应该如何协调多个容器?
- 您应该如何调度容器?
- 您应该如何为容器分组与编列目录?
开发人员可利用 Kubernetes 等容器编排平台来克服这些挑战。Kubernetes 是一种开源技术,让您可以大规模管理容器。它能够解决操作复杂性问题,帮助您跨多个服务器扩展您的工作负载并管理容器部署。
主要区别:Kubernetes 与Docker
Kubernetes 和 Docker 都是开源容器技术。不过,它们在工作原理以及在分发容器化应用程序时所扮演的角色方面有根本性的区别。开发人员可使用 Docker 来创建与操作容器映像。他们使用 Kubernetes 大规模地管理多项微服务。每项微服务本身又由多个容器组成。
运维
Docker 这个术语其实指的是开发人员用以构建、分享并运行容器化应用程序的一套工具。下面是一些您可以使用的 Docker 命令:
- 使用 Docker Build 来创建容器映像
- 使用 Docker Compose 来定义与运行多容器应用程序
- 使用 Docker Hub 来查找与分享容器映像,用法与用于分享代码的 GitHub 类似
一方面,Kubernetes 通过管理计算实例集群来运行。它会根据可用的计算资源和每个容器的资源要求,调度容器在集群上运行。在逻辑分组中运行的容器被称为 Pod,您可以将一个或多个容器作为一个 Pod 进行运行和扩展。您可以根据其资源要求,在您的 Kubernetes 集群上自动启动更多 Pod。
核心技术
Docker Engine 是开发人员用于构建您的应用程序,并对其进行容器化的组件。它会提供 API,并由这些 API 指定程序可以用来通信以及对其发出指示的接口。类似地,Kubernetes 控制平面软件会决定在什么时候以及什么地方运行容器 Pod,管理流量路由,并根据使用率或者您定义的其他指标来扩展您的 Pod。
最大的优势
Docker 可以允许开发人员使用本地容器在标准化环境中工作,从而对开发生命周期进行简化;而这些本地容器会为您提供应用程序和服务。它是基于容器的平台,支持高度可移植的工作负载。另一方面,Kubernetes 允许您定义复杂的容器化应用程序,并能跨服务器集群大规模运行这些应用程序。
什么时候使用 Kubernetes 或 Docker
Docker 和 Kubernetes 是两种有不同使用案例的不同技术。您可以使用 Docker Desktop 来运行、编辑与管理容器开发。您可以使用 Kubernetes 来大规模运行生产级应用程序。
差异摘要:Kubernetes 与Docker Desktop
特性 |
Kubernetes |
Docker |
这是什么? |
容器编排工具。 |
用于创建和运行容器的容器技术堆栈。 |
使用 |
在多个服务器之间协调多个容器。 |
使用库和运行时将应用程序打包到容器映像。 |
主要优点 |
大规模地定义与运行复杂的容器化应用程序。 |
更快速对应用程序操作和代码传输进行标准化。 |
AWS 如何满足您的容器管理需求?
AWS 提供多种容器服务,使管理您的底层容器基础设施变得更简单,而不管是在本地或在云中。您可以在不用管理服务器的情况下执行从容器编排到运行容器的各种操作。下面提供了一些示例。
Amazon Elastic Container Service
Amazon Elastic Container Service(Amazon ECS)是一项完全托管的容器编排服务,可以让您轻松部署、管理和扩展容器化应用程序。您可以使用 Amazon ECS 来替代 Kubernetes,在 AWS Cloud 中运行 Docker 容器。
Kubernetes 与Amazon ECS
Amazon ECS 在一项服务中提供两种解决方案,分别是容器编排工具和可自动预置底层基础设施资源的完全托管式服务。相比之下,Kubernetes 要求您在云中或本地预置资源。
Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Service(Amazon EKS) 是一项托管 Kubernetes 服务,用于在 AWS Cloud 和本地数据中心上运行 Kubernetes。在云中,Amazon EKS 可自动管理负责安排容器、管理应用程序可用性、存储集群数据和其他关键任务的 Kubernetes 控制面板节点的可用性和可扩展性。