docker 服务和堆栈有什么区别?

What is the difference between docker service and stack?

我想知道这些东西之间有什么区别。他们得到了几乎相同的命令并给出了相同的结果。

docker service 用于在 docker swarm 集群上管理单个服务。这是访问docker群管理器的客户端命令行。

docker stack可用于管理多服务应用程序。它还将您在 docker service 中输入的许多选项移动到 .yml file 中(例如 docker-cloud.yml 或 docker-compose.yml ) 以便于重用。它作为前端 "script" 在 docker swarm 集群使用的 docker swarm 管理器之上工作,所以你可以用 docker stackdocker service 做的所有事情。

最后但同样重要的是,你可以考虑 docker service vs docker stackdocker run vs docker compose 相同,但在 docker swarm群集。

一个服务定义了部署在一台或多台机器上的单个图像的一个或多个实例(由服务中的一个条目描述docker-compose.yaml 文件的一部分)。

一个Stack定义了一组异构的services(用整个yaml文件描述)

docker stack deploy 的语义可以简化您的发布自动化过程,因为它会自动检测和更新现有服务。使用 docker service 时,您必须指定是创建还是更新可能需要更复杂逻辑的服务。

另请参阅: