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

Docker Compose:轻松管理多容器应用

docker compose 是 Docker 官方提供的一个用于定义和运行多容器 Docker 应用的工具。它允许你通过一个 YAML 文件(通常命名为 docker-compose.yml)配置应用所需的多个容器、网络、存储卷等资源,然后通过一条命令一键启动、停止或管理整个应用栈,无需逐个手动手动逐个操作每个容器。

核心作用

在实际开发或部署中,一个应用往往需要多个容器配合工作(例如:Web 应用容器 + 数据库容器 + 缓存容器)。docker compose 的主要价值在于:

  1. 简化多容器管理:用一个配置文件描述所有容器的关系和参数,避免手动执行大量 docker run 命令。
  2. 保持环境一致性:配置文件可以纳入版本控制,确保开发、测试、生产环境的容器配置一致。
  3. 一键操作:通过 docker compose up 启动所有容器,docker compose down 停止并清理,操作简洁高效。

基本使用流程

  1. 编写 docker-compose.yml:定义应用的各个服务(容器)、网络、存储等。
  2. 启动应用:执行 docker compose up(加 -d 后台运行)。
  3. 管理应用:通过 docker compose ps 查看状态、docker compose logs 查看日志、docker compose restart 重启服务等。
  4. 停止应用:执行 docker compose down(可选 --volumes 清理存储卷)。

示例:用 docker compose 部署一个 Web 应用(Nginx + MySQL)

假设我们需要部署一个依赖 MySQL 数据库的 Nginx 网站,docker-compose.yml 配置如下:

关键配置说明

  • services:核心部分,每个子项代表一个容器服务(如 webdb)。
    • image:指定容器使用的镜像。
    • ports:端口映射规则(主机端口:容器端口)。
    • volumes:数据持久化或文件挂载(支持主机目录、命名卷等)。
    • environment:设置容器内的环境变量。
    • depends_on:定义服务启动顺序(但不保证依赖服务 “完全就绪”,仅保证启动顺序)。
  • networks:定义自定义网络,使同一网络内的服务可通过服务名(如 db)通信,无需暴露端口到主机。
  • volumes:定义命名存储卷,用于持久化数据(容器删除后数据不丢失)。

常用命令

# 启动所有服务(后台运行加 -d)
docker compose up -d# 查看运行中的服务
docker compose ps# 查看服务日志(如查看 web 服务日志)
docker compose logs -f web# 重启所有服务
docker compose restart# 停止并删除容器、网络(保留存储卷)
docker compose down# 停止并删除容器、网络、存储卷
docker compose down --volumes

适用场景

  • 本地开发环境:快速搭建包含多组件的应用(如前端 + 后端 + 数据库)。
  • 小型应用部署:在单台服务器上部署多容器应用(生产环境大规模部署通常用 Kubernetes)。
  • 自动化测试:配合 CI/CD 工具,快速启动测试环境。

通过 docker compose,可以大幅简化多容器应用的配置和管理流程,是 Docker 生态中不可或缺的工具。


文章转载自:

http://OR9ybq9a.xwLhc.cn
http://o46qSPhm.xwLhc.cn
http://UtJu2RsS.xwLhc.cn
http://kDetk8W8.xwLhc.cn
http://AWI9UnrW.xwLhc.cn
http://cZ40kSpV.xwLhc.cn
http://uoWtc3U6.xwLhc.cn
http://1nmNjoSr.xwLhc.cn
http://8lREzwTj.xwLhc.cn
http://4bnN9csF.xwLhc.cn
http://l77dCLtE.xwLhc.cn
http://fjQLjRjg.xwLhc.cn
http://oU1ywyAs.xwLhc.cn
http://sGKq3HkT.xwLhc.cn
http://uN7z7HJr.xwLhc.cn
http://RMbncmBg.xwLhc.cn
http://NNMGKFil.xwLhc.cn
http://NyiRHsOI.xwLhc.cn
http://TWwKbGlL.xwLhc.cn
http://lrIZl7Af.xwLhc.cn
http://AsCQxvSH.xwLhc.cn
http://h6y8oDwW.xwLhc.cn
http://5h8vnmW0.xwLhc.cn
http://aZLCU6e6.xwLhc.cn
http://KJVeQ125.xwLhc.cn
http://xb6wrJK8.xwLhc.cn
http://G1EJY9di.xwLhc.cn
http://nTtI7JnA.xwLhc.cn
http://qFgAd3Nx.xwLhc.cn
http://5bTXGJg6.xwLhc.cn
http://www.dtcms.com/a/379204.html

相关文章:

  • 云蝠智能大模型呼叫新模型上线,拥抱AGI
  • 网站SEO内部优化一般包括哪些内容和方法
  • 18j621-3通风天窗图集pdf(免费高清版)
  • 以下是UniApp启动速度优化的深度方案
  • GoogLeNet实战:用PyTorch实现经典Inception模块
  • verilog中task的使用
  • SpringDoc OpenAPI集成spring boot3
  • 安卓13_ROM修改定制化-----安卓 13 系统 ROM 定制化与低版本系统的核心区别
  • yolo学习笔记02——yolo简介
  • OpenCV 开发 -- 图像算术运算
  • 字符串-43.字符串相乘-力扣(LeetCode)
  • java properties/反射基础
  • solidity的高阶语法4
  • Vue.js Data定义方式对比 data() { return {...} } 与 data: {} 的区别
  • P11961原根判断(1)
  • 特征空间的转换方法 IPM/LSS/Transformer
  • 【Vue3】05-Options API和Composition API的区别
  • 锁框架-面试
  • 电商 API 爬虫高阶技巧:多线程 / 异步请求结合,突破接口频率限制
  • vue两个组件互相引入时候会报错
  • 《芯片封装后未测试品粘连及边缘残胶的多维度工艺与材料失效分析》
  • MySQL基础全面解析
  • 探索容器技术:从LXC到Podman的演进
  • IntelliJ IDEA 启动项目时配置端口指南
  • java 实现rtsp 直播流下载
  • Python高级编程实战:装饰器、迭代器与生成器的深度应用
  • 高级SQL技术综合指南(MySQL)
  • 【51单片机】【protues仿真】基于51单片机电子琴系统
  • 解决idea2021maven依赖导入后还是找不到包,爆红无法导入
  • Netty学习