docker-compose 中服务的概念和容器的概念是什么关系?

时间:2021-02-23 03:47:30

标签: docker docker-compose

在 docker-compose 中,我们可以定义 service 属性 image,或者我们可以 build 来自 dockerfile 的图像。 service 似乎与 container 相同,后者也是基于 image 的运行实例。

那么servicecontainer有什么区别?

2 个答案:

答案 0 :(得分:1)

从概念上讲,服务和容器是完全不同的东西。

  • 容器是围绕独立进程的标准化包装器。
  • 服务是一种通过正式接口提供对功能(运行软件)的访问的机制。

此外,在 docker-compose 中,一个服务可以有 0..n 个实例,其中 n 默认为 1 并且可以被覆盖。 HTTP 上的访问将由 compose 进行负载平衡,并且服务将在注册表中注册,允许其他服务按访问名称 (dns) 查找它们。

还有其他差异,例如服务在共享网络上的默认位置。而且,另一个区别是 compose 是声明性的,其中 'docker run' 是必要的。业界对前者有强烈偏好。

答案 1 :(得分:0)

你的假设似乎是正确的。 Docker states 他们遵循 Cloud Native Applications 的 compose-spec。根据{{​​3}}:

服务由 Docker 镜像和一组运行时参数定义。服务中的所有容器都是使用这些参数创建的。

在功能上,它们应该是相同的。 docker-compose 文件是一种更简单的方法来定义容器应该如何运行(与向 docker CLI 提供长命令相比)。服务是 docker-compose 用来抽象一些可以独立于其他组件进行扩展和替换的计算资源的概念。

所有功劳都归功于 compose-spec 文档。这是我读过的关于它们的含义的最佳描述。