docker 服务和 docker 容器之间的区别

difference between docker service and docker container

我可以通过命令

创建一个 docker 容器
docker run <<image_name>>

我可以通过命令创建服务

docker service create <<image_name>>

这两者在行为上有什么区别?

我什么时候需要通过容器创建服务?

没有真正的区别。在官方documentation你可以阅读"Services are really just containers in production".

可以在 "docker-compose.yml" 中声明服务并从中启动。一旦启动,它们将 运行 作为容器。

这只是为部分堆栈命名的常用方法。

docker service 命令中的 docker swarm 替换了 docker rundocker run 专为单主机解决方案构建。它的整个想法是专注于与之通信的系统上的本地容器。而在集群中,各个容器是无关紧要的。我们简单地使用 swarm 服务来管理集群中的多个容器。 Swarm 将为我们编排服务的容器。

docker service create主要用于docker swarm modedocker run没有缩放的概念up/down。使用 docker service create 您可以使用 --replicas 命令指定要创建的副本数。这将在许多不同的节点中创建和管理容器的多个副本。使用 docker service createdocker service ...

下的其他命令管理多个容器有几个这样的选项

请注意:docker 服务用于容器编排系统 (swarm)。它内置了故障恢复功能。 IE。它在失败时重新创建一个容器。 docker run如果失败,将永远不会重新创建容器。当使用 docker service 命令时,我们并不是直接要求执行 "create a single container" 之类的操作,而是向编排系统说 "put this job in your queue and when you can get to it perform that action on the swarm"。这意味着它具有回滚功能、故障缓解和大量内置智能。

您需要考虑在集群模式下使用 docker service create,而不在集群模式下使用 docker run。您可以查找 docker 群以了解 docker 服务。