首页/云/云与容器速查/Compose 数据卷声明与使用
容器与 Docker106 条

Compose 数据卷声明与使用

顶层 volumes 声明具名卷,服务里以 卷名:容器路径 引用;绑定挂载直接写宿主路径。具名卷由引擎管理,跨容器生命周期保留数据。

云与容器速查云更新于 2026-10-12
具名卷顶层 volumes: db-data: → 服务 - db-data:/var/lib/mysql
绑定挂载- ./data:/app/data(相对 compose 文件所在目录)
只读路径后缀 :ro
外部卷external: true + name: 已有卷名,复用不创建
匿名卷只写容器路径(-/var/lib/mysql)由引擎自动创建

示例

示例
services:
  db:
    image: mysql:8.0
    volumes:
      - db-data:/var/lib/mysql
      - ./conf/my.cnf:/etc/mysql/conf.d/my.cnf:ro
volumes:
  db-data:
具名卷实际名称带项目前缀(<项目>_db-data):换项目名相当于换一套卷,迁移数据时别找错。

易错点

  • 以为 data 目录在项目里:具名卷数据在 /var/lib/docker/volumes,备份容易漏
  • 绑定挂载写相对路径理解错:相对的是 compose 文件目录,不是当前 shell 目录

数据来源与参考

  • Docker Docs:Compose volumes

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌