首页/AI/大模型部署与运维速查/docker compose 部署推理服务
部署形态与选型43 条

docker compose 部署推理服务

compose 把引擎、网关、监控编排在一个文件里,适合单机多服务部署;GPU 通过 reservations.devices 声明,避免容器拿不到显卡。

用编排文件管住单机多服务

单机部署推理服务时,引擎、网关、监控导出器往往要一起起。用编排文件把这些服务写在一个文件里,启动顺序、端口映射、卷挂载与依赖关系都有据可查。显卡通过资源声明段申请,写对之后容器才能拿到设备;写错时容器会以「找不到设备」失败。

编排片段(GPU 声明)

编排片段(GPU 声明)
services:
  vllm:
    image: vllm/vllm-openai:v0.6.0        # 固定版本,便于回滚
    command: ["--model", "/models/Qwen", "--max-model-len", "8192"]
    ports: ["127.0.0.1:8000:8000"]         # 只绑本机,对外经网关
    volumes: ["/data/models:/models"]
    ipc: host
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1                     # 申请的卡数
              capabilities: [gpu]

启停与查看

启停与查看
docker compose up -d            # 后台启动全部服务
docker compose logs -f vllm     # 跟踪引擎日志
docker compose ps               # 查看服务状态与端口
docker compose down             # 停止并移除容器

要点与代价

要点说明写错的后果
版本声明镜像 tag 固定到具体版本重建后行为变化,不可回归
设备段按卡数或设备编号声明容器拿不到卡,启动失败
端口绑定绑定到本机或内网地址服务直接暴露在公网
卷挂载权重与缓存目录挂进来容器内找不到权重,反复下载
共享内存按引擎要求配置批量稍大就报共享内存错误

典型使用场景

  • 单机一体化部署:引擎加网关加监控一个文件管住
  • 开发环境搭建:一条命令拉起整套依赖,减少手工步骤
  • 测试环境复现:编排文件入库,环境差异显著减小
  • 版本回滚:改回旧 tag 后重建即可切回上一个版本
  • 多实例同机:用不同端口与设备声明把实例隔开
新版编排规范也支持简写的设备声明写法,以所用版本的规范为准:写法不生效时先确认版本支持的语法。
编排文件要入库并纳入变更记录:手工改过又没留痕的配置,会在下次重建时被静默覆盖,实例之间也可能因此不一致。
只写资源声明段而本机编排版本过旧时容器起不来:确认版本支持该段落再排查别的原因。

易错点

  • 编排版本过旧:资源声明段被忽略或直接报错,容器拿不到设备
  • 镜像用浮动标签:重建后引擎版本变化,压测基线与线上不一致
  • 端口绑定成所有网卡:引擎接口直接对外,没有网关保护
  • 忘记挂载权重目录:容器内路径不存在,日志报文件缺失
  • 多实例共用默认端口:启动冲突,表现为服务起不来

数据来源与参考

  • Docker Compose 文档(docs.docker.com/compose)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌