在 docker-compose 中,我们可以定义 service
属性 image
,或者我们可以 build
来自 dockerfile 的图像。
service
似乎与 container
相同,后者也是基于 image
的运行实例。
那么service
和container
有什么区别?
答案 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 文档。这是我读过的关于它们的含义的最佳描述。