当前位置: 首页 > 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.lryc.cn/news/579265.html

相关文章:

  • 鸿蒙UI框架深度解析:对比Android/iOS的布局适配与组件设计
  • 优雅草蜻蜓T语音会议系统私有化部署方案与RTC技术深度解析-优雅草卓伊凡|clam
  • 【字节跳动】数据挖掘面试题0002:从转发数据中求原视频用户以及转发的最长深度和二叉排序树指定值
  • gin框架 中间件 是在判断路由存在前执行还是存在后执行的研究
  • 人工智能-基础篇-14-知识库和知识图谱介绍(知识库是基石、知识图谱是增强语义理解的知识库、结构化数据和非结构化数据区分)
  • ubentu服务器版本安装Dify
  • docker拉取redis并使用
  • 代码训练LeetCode(44)螺旋矩阵
  • Notion 创始人 Ivan Zhao:传统软件开发是造桥,AI 开发更像酿酒,提供环境让 AI 自行发展
  • Highcharts 安装使用教程
  • 数据结构20250620_数据结构考试
  • mysql查看数据库
  • IPS防御原理和架构
  • MySQL 用户管理与权限控制
  • Python 的内置函数 print
  • vue动态绑定样式
  • 利用tcp转发搭建私有云笔记
  • (第三篇)HMTL+CSS+JS-新手小白循序渐进案例入门
  • Spring Cloud 微服务(链路追踪与日志聚合)
  • Springboot开发常见注解一览
  • Rust 安装使用教程
  • 【数字后端】- 什么是AOI、OAI cell?它们后面数字的含义
  • 无代码自动化测试工具介绍
  • windows系统下将Docker Desktop安装到除了C盘的其它盘中
  • SpringSSM
  • SQLMesh中的SQL模型:从基础定义到高级应用
  • Python3完全新手小白的学习手册 10 文件和异常
  • C++ 完美转发(泛型模板函数)
  • Python训练营Day1
  • Spring生态在Java开发