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

云原生中如何进行 docker-Compose 单机编排?

Docker Compose 是用于在单机上定义和运行多容器 Docker 应用程序的工具,通过 YAML 文件配置服务依赖,适合开发测试及单机生产环境。

先说结论:Docker Compose 适合单机多容器场景,通过 YAML 文件一次性管理构建、启动和依赖。

  • 适合:开发测试环境或单机部署的多服务应用。
  • 先准备:编写 docker-compose.yml 文件,定义服务、网络和卷。
  • 验收:使用 docker-compose ps 检查状态,日志确认服务正常。

命令速用版

# 启动服务(后台运行)
docker-compose up -d# 查看运行状态
docker-compose ps# 停止并移除容器、网络
docker-compose down# 查看日志
docker-compose logs -f

为什么会这样

在微服务或复杂应用中,一个项目往往包含 Web 服务、数据库、缓存等多个容器。如果手动执行 docker build 和 docker run,需要多次编写命令,且容器间的网络通信、启动顺序依赖难以管理。Docker Compose 允许在一个 YAML 模板文件中定义一组相关联的应用容器为一个项目,通过一条命令即可完成所有依赖的构建和启动,自动化处理网络隔离和端口映射。

分步处理

1. 安装与版本确认
Linux 环境下可通过官方脚本安装二进制文件,部分系统如 CentOS8 安装 Docker 后可能自动包含 compose 插件。安装后可通过 docker-compose `--version` 查看版本,公开资料中曾提及 1.29.2 为较稳定版本,具体以官方发布为准。

2. 编写配置文件
在项目目录下创建 docker-compose.yml 文件。文件需遵循 YAML 格式规范,使用空格缩进而非 Tab 键。基本结构包含版本声明和服务定义:

version: "3"
services:web:build: .ports:- "8080:8080"db:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: example

3. 启动编排
在配置文件所在目录执行 docker-compose up 命令。若镜像未构建,会自动执行 build;若镜像不存在,会自动拉取。添加 -d 参数可在后台运行。

4. 停止与清理
执行 docker-compose down 可停止容器并移除网络。若需同时删除卷,可添加 -v 参数,但需注意数据备份。

怎么验证是否生效

1. 状态检查
执行 docker-compose ps,所有服务状态应显示为 Up。若显示 Exit 或 Restarting,需查看日志。

2. 日志确认
使用 docker-compose logs 查看输出,确认无报错信息。对于 Web 服务,可尝试 curl 访问映射端口。

3. 网络连通
Compose 会自动创建默认网络,服务间可通过服务名互相访问。进入容器 ping 服务名可验证内部解析是否正常。

常见坑

1. 格式缩进错误
YAML 对缩进敏感,必须使用空格且同级对齐,使用 Tab 键会导致解析失败。

2. 命令差异
Docker Compose V1 使用 docker-compose 命令,V2 插件版本使用 docker compose 命令(中间无横杠),需根据安装情况调整。

3. 路径与上下文
build 上下文路径需正确,若 Dockerfile 不在当前目录,需指定 context。卷挂载路径需确保宿主机目录存在或有权创建。

4. 单机限制
Compose 仅适用于单机编排,若需跨节点集群管理,应考虑 Swarm 或 Kubernetes 方案。

参考来源

  • 【云原生】docker-compose 单机容器编排工具
  • docker 高级篇-docker-compose 容器编排介绍及实战(含官方文档地址:https://docs.docker.com/compose/)
  • 【云原生】容器编排技术 Docker Compose
  • 云原生之 Docker 篇 Docker Compose 介绍及使用入门

原文链接:https://www.zjcp.cc/ask/10175.html

http://www.jsqmd.com/news/770774/

相关文章:

  • 2026年四川工程设备租赁深度横评:空压机与钻机一站式快速响应服务指南 - 年度推荐企业名录
  • MaaAssistantArknights:解放你的明日方舟日常,让游戏回归乐趣本身
  • FFmpeg-Kit:如何用一套工具解决跨平台音视频处理难题?
  • 杭州友杰建材:滨江靠谱的PPR管批发公司有哪些 - LYL仔仔
  • 变压站无线测温物联网系统方案
  • 别再只用input()了!Python里sys.stdin.readline()的5个实战场景(含文件重定向)
  • 实战避坑:在K8s上为Argo Rollouts配置金丝雀发布,从流量切分到自动回滚的完整指南
  • 开发多语言翻译服务时借助 taotoken 灵活选用最合适的模型
  • OpenRGB:一款开源RGB灯光控制工具,让你告别多软件混乱时代
  • 高效键盘控制鼠标实战指南:3个关键技巧提升Windows操作效率
  • 2026年自贡全案整装与智能家居装修深度横评:四区两县一站式家装避坑指南 - 企业名录优选推荐
  • 揭秘AI图像质量评估:让计算机看懂图片美丑与清晰度
  • 2026年四川建筑钢板出租市场报告:本土服务商崛起,专业化成竞争核心 - 深度智识库
  • 合规接入国际AI服务:三层架构与开源模型部署实践
  • 5分钟搭建原神私服:KCN-GenshinServer终极完全指南
  • 2026年5月丽水镀铬棒/光轴/导向轴厂家选择标准与权威解析 - 2026年企业推荐榜
  • 航拍电网连接端识别检测数据集 yolo数据集 1200张
  • Struts2-Scan实战:企业级Struts2漏洞检测与利用完整方案
  • 基于OpenClaw构建医疗数据互操作自主代理工作流实战
  • 杭州友杰建材:上城靠谱的PVC管出售公司有哪些 - LYL仔仔
  • 如何用GetQzonehistory打造你的专属数字记忆档案馆
  • 深度解析AhMyth Android RAT:移动安全研究的技术前沿与创新实践
  • TigerVNC远程桌面指南:15分钟实现跨平台流畅远程办公
  • 深入Linux内核:图解of_property_read_u32函数调用链与内存安全(内核4.14)
  • 3步解决Mac上Upscayl图像放大失败的常见问题
  • Qt 表格别总用 QTableWidget,项目后期真的会卡到怀疑人生
  • 应对大模型服务突发波动,Taotoken的路由与容灾机制如何发挥作用
  • 如何在AMD显卡上使用kohya_ss进行AI绘画模型训练?5步解决NVIDIA依赖问题
  • 2026丽江旅拍消费透明度TOP6:零隐形消费机构红榜 - 江湖评测
  • 2026年自贡全案整装与智能家居装修完全指南:五大品牌深度横评 - 企业名录优选推荐