Docker Compose启动多个镜像实例

1. Docker Compose 基础概念

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

  • 核心文件:docker-compose.yml

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

Compose 文件结构

version: "3"   # Compose 文件版本
services:      # 定义多个服务(容器)
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  app:
    build: ./myapp
    environment:
      - CONFIG_PATH=/app/config
    volumes:
      - ./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_64
    container_name: openatc1
	volumes:
		- ./config/config1:/app/config
    networks:
      macvlan_net:
        ipv4_address: 192.168.15.200

  openatc2:
    image: openatc:x86_64
    container_name: openatc2
	volumes:
		- ./config/config2:/app/config
    networks:
      macvlan_net:
        ipv4_address: 192.168.15.201

  openatc3:
    image: openatc:x86_64
    container_name: openatc3
	volumes:
		- ./config/config3:/app/config
    networks:
      macvlan_net:
        ipv4_address: 192.168.15.202

networks:
  macvlan_net:
    driver: macvlan
    driver_opts:
      parent: enp1s0      # 替换为宿主机真实网卡
    ipam:
      config:
        - subnet: 192.168.15.0/24
          gateway: 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: myapp
    deploy:
      replicas: 10
    volumes:
      - ./config:/app/config

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


5. 优点

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

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

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

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


posted @ 2025-09-25 16:04  江海余生  阅读(75)  评论(0)    收藏  举报