date
related_level
slug
type
relate_date
summary
status
tags
category
last_updated
Nov 10, 2025 10:02 PM
是否已更新
orginal_page
是否推荐
参考资料
Docker Compose
- Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,从配置中创建并启动所有服务。
- 两个重要的概念
- 服务 (
service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 - 项目 (
project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml文件中定义。
- Compose file是定义Docker应用程序的服务、网络和卷的YAML文件
Compose 应用程序模型
- Compose 规范允许定义基于平台无关容器的应用程序。这样的应用程序被设计为一组容器,它们必须与足够的共享资源和通信信道一起运行
- 组成部分:
services,networks,volumes,configs,secrets - 应用程序的计算组件定义为
services。services是一个抽象概念,通过运行一次或多次相同的容器映像(和配置)在平台上实现。 services通过networks相互通信。在本规范中,网络是一种平台能力的抽象,用于在连接在一起的services中的容器之间建立IP路由。低级别、特定于平台的networks选项被分组到networks定义中,并且可能在某些平台上部分实现。services将持久数据存储并共享到volumes中。该规范将这种持久性数据描述为具有全局选项的高级文件系统装载。特定于平台的实际实施细节被分组到volumes定义中,并且可能在某些平台上部分实施。- 某些服务需要依赖于运行时或平台的配置数据。为此,规范定义了一个专用概念:
configs。从服务容器的角度来看,configs与volumes相当,因为它们都是装载到容器中的文件。configs类型的实际定义应抽象为涉及不同平台的资源和服务。 secrets是敏感数据的一种特定类型的配置数据,在没有安全考虑的情况下不应公开。secrets在services中的使用与文件被装载到services的容器中一致,但提供敏感数据的特定平台资源足够具体,因此Compose规范中为其塑造了一个独特的概念和定义。volumes、configs和secrets之间的区别允许实现在服务级别提供可比的抽象,但涵盖了充分的平台资源的特定配置,以便于识别数据用途。
Project是应用程序规范在平台上的单独部署。项目名称用于将资源分组在一起,并将它们与其他应用程序或同一个Compose指定应用程序的其他安装隔离开来。在平台上创建资源的Compose实现必须按项目前缀命名资源,并设置标签com.docker.Compose.project- 项目名称可以由顶级属性
name显式设置。Compose实现必须为用户提供一种设置自定义项目名称并重写该名称的方法,这样,只需传递一个不同的名称,就可以在同一基础结构上两次部署同一个compose.yaml文件,而无需更改。
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/docker_compose_intro
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
