当前位置: 首页 > news >正文

Docker Compose 基础——AI教你学Docker

3.1 Docker Compose 基础

Docker Compose 是 Docker 官方推出的多容器应用定义与管理工具。它极大简化了多服务应用的部署、测试和运维,是现代容器开发与本地集成环境的核心工具之一。

一、Compose 的作用与优势

1. 作用

  • 多容器应用编排:通过一个 YAML 文件(通常为 docker-compose.yml)定义应用的各个服务(如 Web、数据库、缓存等)、网络、卷及依赖关系。
  • 一键部署与管理:用一条命令即可启动、停止、重启、销毁整个多容器应用。
  • 本地开发集成:为开发团队提供一致的本地环境,避免“在我电脑上没问题”的问题。
  • 自动服务发现:同一 Compose 项目下的服务间可通过服务名直接通信(内置 DNS)。
  • 环境隔离与配置复用:支持多套配置文件(如 .env)及多环境部署(dev/test/prod)。

2. 优势

  • 声明式配置:用 YAML 描述一切,配置清晰易读易维护。
  • 团队协作友好:配置文件可纳入版本管理,团队共享一致开发环境。
  • 简化命令操作:只需记住 docker compose up/down/logs 等少量命令,无需手动管理容器关联。
  • 支持依赖与顺序depends_on 可声明服务依赖,确保启动顺序。
  • 扩展性好:方便与 CI/CD、测试、远程部署等工具链集成。

二、安装与版本管理

1. Compose 的发展历程

  • Compose v1:最初以 Python 脚本(docker-compose)分发,需单独安装。
  • Compose v2:Go 语言重写,集成于 Docker CLI(docker compose),性能更优,功能更丰富,并成为官方主推版本。

2. 安装方式

a) Compose v2 (推荐)
  • Docker Desktop(Win/Mac):默认自带 Compose v2,无需单独安装。

  • Linux 安装(需 Docker 20.10.13+)

    • 直接使用 docker compose 命令,无需 docker-compose 二进制。
    • 可通过包管理器升级 Docker,即可获得 Compose v2。
  • 检查版本

    docker compose version
    
b) Compose v1(已不推荐)
  • docker-compose 命令行形式存在,需通过 pip 或二进制文件安装。

  • 官方已于 2023 年停止维护 v1。

  • 检查 v1 版本

    docker-compose version
    

3. v1/v2 差异

特性Compose v1 (docker-compose)Compose v2 (docker compose)
安装方式独立安装集成于 Docker CLI
命令调用docker-compose updocker compose up
语言实现PythonGo
性能与兼容性较旧更快,兼容性更好
支持平台跨平台,维护停止跨平台,长期维护
新特性不再更新持续更新,支持 Compose Spec

4. 迁移建议

  • 所有新项目:建议使用 v2(docker compose 命令)。
  • 老项目:如有 docker-compose 依赖,尽快升级至新版 CLI。
  • 配置文件:Compose v1/v2 配置格式基本兼容,如需使用新特性(如 profiles、扩展字段)建议查阅最新官方文档。

三、参考命令速查

docker compose up -d        # 后台启动所有服务
docker compose down         # 停止并清理服务、网络、卷
docker compose ps           # 查看服务状态
docker compose logs -f      # 实时查看服务日志
docker compose build        # 构建所有镜像
docker compose config       # 检查和生成最终配置

四、官方资料

  • Compose 官方文档
  • Compose v2 迁移指南
  • Compose 规范(Compose Spec)
http://www.dtcms.com/a/265291.html

相关文章:

  • 《寻北技术的全面剖析与应用前景研究报告》
  • 【4】 Deployment深入简出实战演练
  • 无代码自动化测试工具介绍
  • Java中创建线程方法以及线程池参数配置
  • (LeetCode ) 13. 罗马数字转整数 (哈希表)
  • 跨越十年的C++演进:C++20新特性全解析
  • 软件反调试(3)- 基于父进程的检测
  • Python 高光谱分析工具(PyHAT)
  • 【数字后端】- 什么是AOI、OAI cell?它们后面数字的含义
  • seaborn又一个扩展heatmapz
  • 利用tcp转发搭建私有云笔记
  • Java--多态--向上转型--动态绑定机制--断点调试--向下转型
  • IO进程线程 (进程)
  • 旋转不变子空间( ESPRIT) 算法
  • 算法笔记上机训练实战指南刷题
  • pytorch学习-9.多分类问题
  • WSL2 + Docker Desktop 环境中查看本地镜像
  • 基于SpringBoot的场地预定管理系统
  • Springboot开发常见注解一览
  • 记一次finallshell.exe打开无法应的处理
  • 【卡尔曼滤波第二期】一维无过程噪声的卡尔曼滤波
  • 红黑树:高效平衡的秘密
  • 声网支持弱网对抗保障直播不卡不花屏
  • Android Native 之 init初始化selinux机制
  • Beamer-LaTeX学习(教程批注版)【4】
  • (LangChain)RAG系统链路向量检索器之Retrievers(五)
  • 设计模式精讲 Day 23:访问者模式(Visitor Pattern)
  • Python 的内置函数 print
  • RT Thread Studio修改堆区大小的方法
  • Python 中 http.client 与 requests 的对比及适用场景