新闻详情

新闻详情

首页 / 资讯中心 / 详情

Docker 容器实战系列(七):Docker Compose 多容器编排实战

发布时间:2026/10/1 8:43:11来源:尧图网络
Docker 容器实战系列(七):Docker Compose 多容器编排实战
Docker 容器实战系列七Docker Compose 多容器编排实战前言前面我们学会了容器基础命令、镜像构建、数据卷、容器网络。但是有个痛点一个项目往往不止一个容器。比如后端服务 MySQL Redis每次启动都要敲一长串docker run命令还要手动创建网络、挂载数据卷容器多了非常麻烦而且不好统一管理。Docker Compose 就是用来解决多容器应用编排的工具。只需要写一个docker-compose.yml配置文件一条命令就能启动 / 停止整套项目环境。提示新版 Docker 已经内置 Compose命令是docker compose中间空格老版本是docker-compose横杠。一、Compose 核心概念服务 (service)对应一个容器。比如 mysql 服务、redis 服务。项目 (project)一组关联的服务默认以当前文件夹名称作为项目名。yaml 配置文件docker-compose.yml定义所有服务的镜像、端口、挂载、网络、依赖关系。二、最简示例Nginx MySQL 测试环境新建文件夹在里面创建docker-compose.yml文件version: 3.8 services: nginx: image: nginx:alpine ports: - 8080:80 volumes: - ./nginx/html:/usr/share/nginx/html depends_on: - mysql restart: always mysql: image: mysql:8.0 ports: - 3306:3306 volumes: - mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: demo_db restart: always volumes: mysql-data:文件简单解释services定义所有容器服务image使用哪个镜像ports端口映射和docker run -p一致volumes数据卷持久化数据environment环境变量用来设置数据库密码等depends_on依赖代表 nginx 会等待 mysql 先启动注意只是等容器启动不等数据库服务就绪restart: always容器退出自动重启生产常用底部volumes声明全局数据卷三、常用 Compose 命令高频记这几个足够# 在yml文件所在目录启动整套服务后台运行 docker compose up -d # 查看运行状态 docker compose ps # 查看日志-f 实时跟踪日志 docker compose logs -f # 只查看某个服务日志例如mysql docker compose logs -f mysql # 停止服务容器不删除 docker compose stop # 停止并删除容器、网络数据卷不会自动删 docker compose down # 停止删除容器、网络删除数据卷谨慎会清空数据库数据 docker compose down -v四、Compose 自带网络重点当你执行docker compose up的时候Compose 会自动创建一个自定义网桥当前 yml 里所有服务都会加入这个网络服务名直接作为域名互相访问例如nginx 容器内部可以直接用mysql:3306访问 mysql 服务不需要写 IP这就是多容器项目最方便的地方不用手动创建docker network。⚠️注意depends_on只能控制容器启动顺序不能保证 mysql 服务初始化完成。业务代码里仍然需要做重试机制避免后端启动时报数据库连接失败。五、开发与生产小技巧开发环境可以绑定本地目录挂载修改代码实时生效生产环境尽量使用自己构建好的镜像不要直接挂载代码目录密码、密钥不要硬写在 yaml 里可以使用.env环境变量文件在同目录新建.env文件存放变量compose 会自动读取不要把docker-compose.yml上传到公开代码仓库如果里面有明文密码.env 简单示例MYSQL_ROOT_PASSWORDroot123456然后在 yml 中引用environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}六、常见踩坑yaml 缩进非常严格必须用空格不能用 Tab缩进错直接启动失败depends_on不等于服务就绪只是容器启动顺序docker compose down默认不会删除 volumes数据库数据会保留端口冲突宿主机端口被占用修改 ports 前面的宿主机端口即可本期总结Docker Compose 通过 yaml 文件管理多容器告别一堆 docker run 命令services定义容器内置网络服务名直接互相通信核心命令up -d启动、ps查看、logs看日志、down销毁depends_on 只控制容器启动顺序业务要自己处理服务就绪判断下期预告Docker 容器实战系列八镜像安全、镜像清理与生产最佳实践讲镜像漏洞、无用镜像 / 容器清理、镜像分层优化以及生产环境使用 Docker 的安全规范收尾整个基础容器系列。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

聚类评价指标详解:RI、ARI、MI与NMI对比与实操指南 2026/10/1 11:07:41

聚类评价指标详解:RI、ARI、MI与NMI对比与实操指南

1. 无监督聚类评价,最容易被忽视的一环 做聚类分析的人,十个里有八个把精力花在算法选型和参数调优上,剩下两个在纠结 K 值怎么定。真正等到聚类跑完,面对一堆簇标签,能一口气把评价指标讲清楚的人少之又少。监督学习有…

阅读更多 →
Java学习五 面向对象高级4 接口2-接口中的成员 2026/10/1 11:07:35

Java学习五 面向对象高级4 接口2-接口中的成员

1.例子:2.例子:接口1:接口2:接口的实现类:Person父类:定义一个新的接口,来继承前两个接口中的内容:则这个新接口定义的类,需要重写前两个接口中的所有方法测试类:总结&am…

阅读更多 →
jsQR纯前端二维码识别:从像素到解码的实战指南 2026/10/1 11:07:35

jsQR纯前端二维码识别:从像素到解码的实战指南

简介:一份面向Web前端初学者的二维码识别示例资源,围绕jsQR库演示了在浏览器端从图片中解析二维码的完整链路,适合需要快速为内部系统、管理后台或静态页面增加扫码能力的新手开发者。jsQR是纯JavaScript实现的二维码识别库,无需后…

阅读更多 →
基于JavaWeb的在线教务管理系统毕设源码解析与实战避坑指南 2026/10/1 11:07:35

基于JavaWeb的在线教务管理系统毕设源码解析与实战避坑指南

简介:一份基于 JavaWeb 的在线教务管理系统源代码,采用 SSM 框架开发,面向毕业设计、课程实训与 JavaWeb 入门进阶。系统覆盖课程、班级、教师、学生等核心资料管理,并内置在线考试模块,包含试题库维护、自动组卷、评分…

阅读更多 →
遥感图像电塔检测数据集:VOC与YOLO格式转换及YOLOv8训练实践 2026/10/1 11:07:22

遥感图像电塔检测数据集:VOC与YOLO格式转换及YOLOv8训练实践

简介:目标检测模型的落地效果,很大程度上取决于标注数据的质量与格式。在电力巡检场景中,电塔作为典型小目标,在遥感图像中像素占比少,且容易与背景混淆,对检测算法的精度和鲁棒性提出较高要求。针对此类任…

阅读更多 →
从字典序理解“下一个排列”:经典三步原地算法解析 2026/10/1 11:07:15

从字典序理解“下一个排列”:经典三步原地算法解析

我最早刷到这道“下一个排列”的时候,其实是在面试前突击准备算法题。当时第一眼看到题目描述,觉得挺简单:不就是找一个比当前排列大一点的排列吗?结果动笔一写才发现,这题本质上考的是对字典序的理解、对数组规律的观…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉