14-Docker-compose容器编排

简介: Docker-Compose 是 Docker 官方开源工具,用于快速编排和管理多容器应用。通过编写 `docker-compose.yml` 文件定义服务关系,实现一键启停、构建、部署多个容器,简化了复杂应用的管理流程,提升开发运维效率。

Docker-compose


Docker-Compose 是 Docker 官方的开源项目,负责实现对Docker容器集群的快速编排。


Docker-Compose可以管理多个Docker容器组成一个应用。需要定义一个yaml格式的配置文件 docker-compose.yml,配置好多个容器之间的调用关系,然后只需要一个命令就能同时启动/关闭这些容器。


Docker建议我们每个容器中只运行一个服务,因为Docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来。但是如果我们需要同时部署多个服务,每个服务单独构建镜像构建容器就会比较麻烦。所以 Docker 官方推出了 docker-compose 多服务部署的工具。


Compose允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目(project)。可以很容易的用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。


核心概念:

  • 服务(service):一个个应用容器实例
  • 工程(project):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml中定义


Compose使用的三个步骤:

  1. 编写 Dockerfile 定义各个应用容器,并构建出对应的镜像文件
  2. 编写 docker-compose.yml,定义一个完整的业务单元,安排好整体应用中的各个容器服务
  3. 执行 docker-compose up 命令,其创建并运行整个应用程序,完成一键部署上线


安装Docker-Compose


Docker-Compose的版本需要和Docker引擎版本对应,可以参照官网上的对应关系


安装Compose:

# 例如从github下载 2.5.0版本的docker-compose
# 下载下来的文件放到 /usr/local/bin目录下,命名为 docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
# 添加权限
chmod +x /usr/local/bin/docker-compose
# 验证
docker-compose version


卸载Compose:直接删除 usr/local/bin/docker-compose文件即可


常用命令


执行命令时,需要在对应的docker-compose.yml文件所在目录下执行。


查看帮助:

docker-compose -h


创建并启动docker-compose服务:(类似 docker run

docker-compose up
# 后台运行
docker-compose up -d


停止并删除容器、网络、卷、镜像:(类似 docker stop +  docker rm

docker-compose down


进入容器实例内部:

docker-compose exec <yml里面的服务id> /bin/bash


展示当前docker-compose编排过的运行的所有容器:

docker-compose ps


展示当前docker-compose编排过的容器进程:

docker-compose top


查看容器输出日志:

docker-compose log <yml里面的服务id>


检查配置:

docker-compose config
# 有问题才输出
docker-compose config -q


重启服务:

docker-compose restart


启动服务:(类似 docker start

docker-compose start


停止服务:

docker-compose stop


compose编排实例


示例:

# docker-compose文件版本号
version: "3"
# 配置各个容器服务
services:
  microService:
    image: springboot_docker:1.0
    container_name: ms01  # 容器名称,如果不指定,会生成一个服务名加上前缀的容器名
    ports:
      - "6001:6001"
    volumes:
      - /app/microService:/data
    networks:
      - springboot_network
    depends_on:  # 配置该容器服务所依赖的容器服务
      - redis
      - mysql
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:data
    networks:
      - springboot_network
    command: redis-server /etc/redis/redis.conf
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db_springboot'
      MYSQL_USER: 'springboot'
      MYSQL_PASSWORD: 'springboot'
    ports:
      - "3306:3306"
    volumes:
      - /app/mysql/db:/var/lib/mysql
      - /app/mysql/conf/my.cnf:/etc/my.cnf
      - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - springboot_network
    command: --default-authentication-plugin=mysql_native_password # 解决外部无法访问
networks:
  # 创建 springboot_network 网桥网络
  springboot_network:


编写完成docker-compose.yml后,进行语法检查:

# 进行语法检查
docker-compose config -q


如果语法检查没有任何问题,进行创建、启动:

docker-compose up -d
目录
相关文章
|
Ubuntu Windows
教你彻底卸载Ubuntu双系统,去污不残留
教你彻底卸载Ubuntu双系统,去污不残留
6985 0
教你彻底卸载Ubuntu双系统,去污不残留
|
9月前
|
缓存 Ubuntu Linux
02-Docker安装 CentOS安装Docker
本文详细介绍在CentOS和Ubuntu系统上安装、配置及卸载Docker的完整步骤,包括配置阿里云镜像加速、离线安装方法、设置开机自启与命令补全,助你快速部署并测试Docker环境。
498 0
|
6月前
|
关系型数据库 MySQL Java
分布式事务终极指南:2PC/XA/TCC/SAGA 从底层原理到生产选型全拆解
本文系统解析分布式事务四大主流方案:XA/2PC(强一致但性能差)、TCC(高并发柔性事务)、SAGA(长事务最终一致)及理论基石(ACID/CAP/BASE),涵盖原理、流程、实战代码、优劣对比与生产选型标准,助你深入掌握核心逻辑。
1257 3
|
11月前
|
设计模式 Java Spring
Java 设计模式之责任链模式:优雅处理请求的艺术
责任链模式通过构建处理者链,使请求沿链传递直至被处理,实现发送者与接收者的解耦。适用于审批流程、日志处理等多级处理场景,提升系统灵活性与可扩展性。
1046 2
|
7月前
|
应用服务中间件 网络安全 nginx
Docker部署OpenClaw(Clawdbot) 绑定域名HTTPS开启公网访问 附阿里云快速部署步骤
在2026年AI自动化工具普及的背景下,OpenClaw(曾用名Moltbot、Clawdbot)凭借强大的任务执行能力、多场景适配特性,成为个人与轻量团队打造专属AI助手的热门选择。然而传统部署方式常受限于服务器已有服务,无法直接重装镜像,而Docker容器化部署完美解决这一痛点——通过隔离环境实现OpenClaw独立运行,不影响现有服务,同时支持灵活迁移与扩展。本文将详细拆解Docker部署OpenClaw的全流程,包含SSL证书申请、Nginx反向代理、域名绑定、HTTPS配置等关键步骤,所有代码命令可直接复制执行,同时新增阿里云OpenClaw快速部署步骤,满足不同用户的部署需求
5235 1
|
7月前
|
人工智能 运维 JavaScript
2026年阿里云上部署+零门槛部署本地AI助手:Windows系统OpenClaw(Clawdbot)保姆级教程
在AI办公自动化全面普及的2026年,OpenClaw(原Clawdbot、Moltbot)作为阿里云生态下热门的开源AI代理工具,凭借“自然语言指令操控、多任务自动化执行、多工具无缝集成”的核心优势,成为个人与轻量办公群体打造专属AI助手的首选。不同于传统AI聊天工具,OpenClaw可直接落地实操任务——无论是文档生成、文件解析、日程提醒,还是阿里云服务器管理、办公流程自动化,都能通过简单的对话指令完成,无需编写一行代码。
1688 1
|
10月前
|
存储 关系型数据库 MySQL
五、Docker 核心技术:容器数据持久化之数据卷
别把重要数据直接放进Docker容器里,因为容器就像一辆“临租车”,车一还(容器被删除),落在里面的东西就全没了。正确的做法是使用数据卷 (Volume),它好比一个属于你自己的、可插拔的“移动硬盘”。你可以把这个“硬盘”(具名数据卷)挂载到任何一辆“临租车”(容器)上使用。这样一来,就算车换了,你的数据也安然无恙,完美解决了数据库等应用的数据持久化问题。
1214 34
五、Docker 核心技术:容器数据持久化之数据卷
|
存储 开发者 Docker
使用Docker清理日志释放磁盘空间
使用Docker清理日志释放磁盘空间
1297 98
|
Java
Java 中 MessageFormat.format 用法
Java 中 MessageFormat.format 用法
698 1