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

文章导读
Docker Compose 是用于在单机上定义和运行多容器 Docker 应用程序的工具,通过 YAML 文件配置服务依赖,适合开发测试及单机生产环境。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

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.7
    environment:
      MYSQL_ROOT_PASSWORD: example

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

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

怎么验证是否生效

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

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

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 介绍及使用入门