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

Docker Compose启动多个镜像实例

1. Docker Compose 基础概念

  • Docker Compose 是一个工具,用 YAML 文件定义和运行 多容器 Docker 应用

  • 核心文件:docker-compose.yml

  • 通过一个命令可以启动、停止、管理整个应用,而不必一个一个容器操作。

Compose 文件结构

version: "3"   # Compose 文件版本
services:      # 定义多个服务(容器)web:image: nginx:latestports:- "8080:80"app:build: ./myappenvironment:- CONFIG_PATH=/app/configvolumes:- ./config:/app/config
  • services → 每个服务对应一个容器

  • build → 从 Dockerfile 构建镜像

  • image → 直接使用已有镜像

  • ports → 容器端口映射

  • volumes → 挂载宿主机目录到容器

  • environment → 容器环境变量


2. 常用 Docker Compose 命令

命令 说明
docker-compose up 启动所有服务(前台)
docker-compose up -d 后台启动所有服务
docker-compose down 停止并删除容器、网络、卷
docker-compose ps 查看服务运行状态
docker-compose logs 查看日志
docker-compose build 重新构建镜像
docker-compose exec <service> bash 进入服务容器交互式调试

3. 示例:管理多个 openatc容器,每个用不同配置,并设置不同的IP地址

假设有 3 个配置文件夹 config_1 ~ config_10

docker-compose.yml

services:openatc1:image: openatc:x86_64container_name: openatc1volumes:- ./config/config1:/app/confignetworks:macvlan_net:ipv4_address: 192.168.15.200openatc2:image: openatc:x86_64container_name: openatc2volumes:- ./config/config2:/app/confignetworks:macvlan_net:ipv4_address: 192.168.15.201openatc3:image: openatc:x86_64container_name: openatc3volumes:- ./config/config3:/app/confignetworks:macvlan_net:ipv4_address: 192.168.15.202networks:macvlan_net:driver: macvlandriver_opts:parent: enp1s0      # 替换为宿主机真实网卡ipam:config:- subnet: 192.168.15.0/24gateway: 192.168.15.1
  • 每个服务挂载不同配置目录

  • 容器名唯一,便于管理

  • 启动时,每个容器会运行 openatc,各自使用自己配置

  • 使用Docker network给每个实例分配固定的ip地址

启动所有服务

docker-compose up -d

查看状态

docker-compose ps

查看日志

docker-compose logs -f

4. 扩展:用 replicas 批量启动

如果你希望多个相同服务(同镜像):

version: "3.8"
services:myapp:image: myappdeploy:replicas: 10volumes:- ./config:/app/config

⚠️ deploy.replicas 只在 Docker Swarm 模式 下生效
如果用普通 Compose,可以通过写多个服务或者使用 docker-compose up --scale myapp=10 扩展


5. 优点

  1. 集中管理:一条命令管理多个容器

  2. 环境隔离:每个服务有自己的容器、配置和挂载卷

  3. 可扩展性:可通过 scalereplicas 快速扩容

  4. 便于开发和部署:开发环境和生产环境一致


http://www.zskr.cn/news/11648.html

相关文章:

  • 深入解析:⸢ 伍-Ⅱ⸥ ⤳ 默认安全治理实践:水平越权检测 前端安全防控
  • mkfx 对磁盘设置标签
  • kubelet源码阅读(二)——device plugin 的ListAndWatch过程
  • ​​[硬件电路-320]:模拟电路与数字电路,两者均使用晶体管(如BJT、MOSFET),但模拟电路利用其线性区,数字电路利用其开关特性。 - 指南
  • 源码安装fail2ban
  • 高效 PDF 处理利器:PDF-XChange Editor v10.7.3.401 特性解析与优化版分享
  • 类的继承与继承的覆盖
  • 触摸IC原厂 VKD223EB是一款低电流1通道触控1按键触摸芯片 HBM静电大于5KV
  • AI元人文思想体系:从哲学基础到价值原语博弈的微观机制
  • 条件判断语句
  • EXCEL 行列转换
  • 基于多假设跟踪(MHT)算法的MATLAB实现
  • Linux grep cut tomcat logs
  • 软件工程课程第一次团队作业
  • 如何在预算与风险之间做选择 iOS 混淆(源码混淆 vs IPA 混淆)的成本-收益分析与实战决策框架
  • 【兰州大学主办|EI稳定检索】第二届信息光学与光电技术国际学术会议(CIOT 2025)
  • 轻量级架构决策记录工具 - ADR Tools
  • Django系列(七)HttpRequest(请求)和HttpResponse(响应)对象
  • 值得收藏!GraphRAG:助力大模型突破“健忘”困局,构建逻辑化升级
  • 工业主板:智能制造与严苛环境的坚实基石
  • 虚拟机下的麒麟V10SP1与SP2进行iSCSI连接——基于MobaXterm
  • AT_arc173_e [ARC173E] Rearrange and Adjacent XOR
  • 使用springboot开发一个宿舍管理系统练习项目 - 实践
  • CF1542
  • PolarFire SOC Auto Update 和 IAP 文档阅读(四) IAP
  • CICD流程建设之持续测试实践指南
  • SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
  • HTTP协议工作原理与生产环境服务器搭建实战 - 详解
  • 专业讲解大模型登记(纯干货)
  • Spring / Spring Boot 常用注解 - 教程