Lazy loaded image
运维管理
Docker Compose 简介
Words 912Read Time 3 min
2025-10-2
2025-11-10
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
    • 应用程序的计算组件定义为servicesservices是一个抽象概念,通过运行一次或多次相同的容器映像(和配置)在平台上实现。
    • services通过networks相互通信。在本规范中,网络是一种平台能力的抽象,用于在连接在一起的services中的容器之间建立IP路由。低级别、特定于平台的networks选项被分组到networks定义中,并且可能在某些平台上部分实现。
    • services将持久数据存储并共享到volumes中。该规范将这种持久性数据描述为具有全局选项的高级文件系统装载。特定于平台的实际实施细节被分组到volumes定义中,并且可能在某些平台上部分实施。
    • 某些服务需要依赖于运行时或平台的配置数据。为此,规范定义了一个专用概念:configs。从服务容器的角度来看,configsvolumes相当,因为它们都是装载到容器中的文件。configs类型的实际定义应抽象为涉及不同平台的资源和服务。
    • secrets是敏感数据的一种特定类型的配置数据,在没有安全考虑的情况下不应公开。secretsservices中的使用与文件被装载到services的容器中一致,但提供敏感数据的特定平台资源足够具体,因此Compose规范中为其塑造了一个独特的概念和定义。
    • volumesconfigssecrets之间的区别允许实现在服务级别提供可比的抽象,但涵盖了充分的平台资源的特定配置,以便于识别数据用途。
  • Project是应用程序规范在平台上的单独部署。项目名称用于将资源分组在一起,并将它们与其他应用程序或同一个Compose指定应用程序的其他安装隔离开来。在平台上创建资源的Compose实现必须按项目前缀命名资源,并设置标签com.docker.Compose.project
    • 项目名称可以由顶级属性name显式设置。Compose实现必须为用户提供一种设置自定义项目名称并重写该名称的方法,这样,只需传递一个不同的名称,就可以在同一基础结构上两次部署同一个 compose.yaml文件,而无需更改。
上一篇
Docker Compose 常用指令
下一篇
Compose file 及其撰写规范

Comments
Loading...