当前位置: 首页 > 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.hskmm.com/?act=detail&tid=17057

相关文章:

  • 卫星时间同步平台:助力分布式测控系统同步工作
  • mkfx 对磁盘设置标签
  • C# Avalonia 15- Animation- Easing
  • 安卓编译重点记录
  • kubelet源码阅读(二)——device plugin 的ListAndWatch过程
  • CyberLink ColorDirector Ultra 2026 14.0.5712.0 视频后期调色
  • CF 1053 Div.2
  • vi编辑器
  • 豆油
  • MQTT
  • 源码安装fail2ban
  • 类的继承与继承的覆盖
  • linux shell awk 中括号 方括号 分割 []
  • springboot配置文件关系及加载顺序
  • 绩效面谈中的优质提问(一)
  • 简单博弈
  • 从 “纸笔清单” 到全栈引擎:数据填报与类 Excel 控件如何重塑企业效率曲线 - 详解
  • 触摸IC原厂 VKD223EB是一款低电流1通道触控1按键触摸芯片 HBM静电大于5KV
  • 09_五大IO模型
  • wsl Ubuntu 使用cmake
  • 做题笔记总板
  • day 4
  • AI元人文思想体系:从哲学基础到价值原语博弈的微观机制
  • 做题笔记16
  • 条件判断语句
  • EXCEL 行列转换
  • 做题笔记6
  • 第17章 Day20-Day21 逆向爬虫之瑞数6
  • 基于多假设跟踪(MHT)算法的MATLAB实现
  • ROS2之消息接口