Answers:
码头工人:
docker run ...
。更新:
Docker Cloud上提供应用程序,节点和群集集群管理的服务将于[2020年5月21日关闭] ...自动构建和注册表存储服务不会受到影响,并将继续可用
除了@yamenk的答案外,我想在这里添加一些细节,这可能有助于人们了解Kubernetes。
docker-compose
:是一个使用YAML文件的工具,该文件描述了您的多容器应用程序,并可以帮助您创建,启动/停止,删除所有这些容器,而不必docker ...
为每个容器键入多个命令。Kubernetes
:是一个用于管理容器化工作负载和服务的平台,可促进声明性配置和自动化。什么?🤔继续阅读...(来自文档):Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
Compose具有用于管理应用程序整个生命周期的命令:
- 启动,停止和重建服务
- 查看正在运行的服务的状态
- 流运行服务的日志输出
- 在服务上运行一次性命令
(摘自Kubernetes简介):Kubernetes是一个容器编排器,例如Docker Swarm,Mesos Marathon,Amazon ECS和Hashicorp Nomad。容器编排器是将主机分组在一起以形成集群的工具,可帮助我们确保应用程序:
- 是容错的
- 可以扩展,并按需执行
- 最佳利用资源
- 可以自动发现其他应用程序,并彼此通信
- 可以从外部世界访问
- 可以更新/回滚而无需停机。
许多人认为Kubernetes很难学习。这是因为它解决了一系列问题,人们试图在不了解所有先决条件的情况下理解。这使其变得复杂。通过阅读有关以下内容的概念/术语,开始将难题的各个部分放在一起。此过程将帮助您了解Kubernetes尝试解决的问题类型:
并且由于容器及其管理周围存在许多不同的事物,因此请留意Cloud Native格局:
此处为互动版本:landscape.cncf.io/
2020年5月:Docker Compose规范现已成为开放标准
与AWS,Microsoft和开源社区中的其他人合作,我们扩展了Compose规范,以在现有Compose平台之外,还支持Kubernetes和Amazon ECS等云原生平台。此处更多内容:blog / compose-spec.io
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deploy
如果您要将具有相同主机的容器联网,请使用docker compose。
如果您要跨多个主机联网容器,请使用kubernetes。
第一个区别是容器引擎和容器协调器之间的区别。
docker
是一个容器引擎,它使您最多可以在PC上本地构建和运行最多一个容器,以进行开发。
docker-compose
是一个Docker实用程序,用于运行多个容器,并允许它们通过docker引擎功能共享卷和网络,在本地运行以模拟服务组合,并在群集上远程运行。
Kubernetes是一个容器编排平台,它负责运行容器并增强引擎功能,以便可以对容器进行组合和扩展以服务于复杂的应用程序(某种PaaS,由您或云提供商管理)。Kubernetes的主要功能是使用容器使基础架构与应用程序脱钩,并且它还对Docker可以使用rkt或cri-o运行容器的其他引擎开放。
Docker云还是PaaS产品,可让您通过 docker
引擎API。
现在,根据您的需求,对基础架构的控制级别和目标受众,您可以使用裸机上的Kubernetes,Azure ACS或Google GKE等。
希望这对您有所帮助:)问候
Docker撰写尚未投入生产。它非常适合PoC或开发环境,但是缺少很多功能,这些功能或多或少会严重影响生产。Swarm更适合生产,但我绝不会在新环境中投资Swarm。Kubernetes赢得了编排大战,这体现在Kubernetes包含在Docker Desktop中,并且所有主要的云提供商都提供了它。Kubernetes的功能更加强大,并且拥有更多的社区和公司支持。
我建议您深入研究Pluralsight,Linux Academy等提供的一些Kubernetes教程,并扩展一个集群以在您选择的云平台(EKS,AKS,GKE等)中使用。如果您尝试使用裸机,请看一下OpenShift,但要认识到您在这种设置中失去了一些Kubernetes的魔力。
Docker-Compose是一个部署文件,使用其环境预定义了一个或多个容器,例如卷,网络,运行命令等。
另一方面,Kubernetes是一个通过Docker容器和其他微服务编排并使其在多个节点之间可扩展且可靠的系统
Docker撰写: 无需任何yaml文件即可直接运行docker容器。但是借助Docker撰写工具,可以在名为docker-compose.yml文件的文件中定义容器属性。请找到以下示例yml文件以了解更多详细信息。
version: "3.7"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- my_config
- my_other_config
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
图像名称,副本数量等。可以通过yml文件进行配置。
Kubernetes: 这是在由Google构建的Docker之上运行的容器管理平台。Docker swam是由docker本身构建的另一个容器管理平台。Kubernetes还提供了将与Pod相关的配置(与Docker中的容器相对应)保存在yaml文件中的功能,例如docker compose。示例yaml文件
apiVersion: v1
kind: Pod
metadata:
name: rss-site
labels:
app: web
spec:
containers:
- name: front-end
image: nginx
ports:
- containerPort: 80
- name: rss-reader
image: nickchase/rss-php-nginx:v1
ports:
- containerPort: 88
在此还可以提供图像,要打开的端口以及Pod到主机端口的映射等。像docker compose一样,kubectl apply -f是运行此文件的命令。