命名卷

1
2
3
4
5
6
7
8
9
10
11
12
services:
web:
image: nginx
volumes:
- web_data:/var/www/html # 挂载命名卷

volumes:
web_data:
driver: local
driver_opts:
type: "nfs" # 可选驱动配置(如NFS)
o: "addr=192.168.1.100,nolock"
参数 说明
volumes 块声明命名卷名称(如web_data)
driver 指定存储驱动(默认local,支持nfs,cifs等)
driver_opts (如 NFS 服务器地址、挂载选项)
特点 持久性强:数据独立于容器生命周期,删除容器后仍保留
易管理:通过名称直接操作(备份迁移)
跨容器共享:多个服务可共同挂载
驱动扩展性:支持远程存储(NFS)实现跨主机共享
默认路径:存储路径为/var/lib/docker/volumes(docker volume ls可以查看)

匿名卷

1
2
3
4
5
services:
db:
image: mysql
volumes:
- /var/lib/mysql # 仅指定容器内路径
参数 说明
volumes 无需声明,自动生成随机名称卷
特点 数据持久化:容器删除后卷仍存在
管理困难:随机名称难追踪,需docker volume ls查找
易留垃圾卷:容器重构时会生成新的匿名卷。旧数据存在还不被使用

绑定挂载

1
2
3
4
5
services:
app:
image: myapp
volumes:
- ./local/data:/app/data:ro # 映射宿主机目录,设置只读
参数 说明
宿主机路径格式 -v 宿主机目录:容器目录[:权限](如 :ro 表示只读)
支持相对路径 如 ./data 和绝对路径
特点 开发友好:实时同步代码或文件修改,无需重建镜像
数据访问:宿主机可直接文件
依赖目录结构:路径不兼容跨环境迁移(win/linux)

临时内存卷(tmpfs)

1
2
3
4
5
services:
cache:
image: redis
tmpfs:
- /tmp/cache # 内存挂载
参数 说明
tmpfs 块指定容器内目录,数据仅存于宿主机内存
特点 读写高效:内存速度远超磁盘,适合高频临时数据
数据安全:容器停止后自动清除
容量限制:受宿主机内存大小限制

对比总结

方式 持久性 管理复杂度 性能 场景
命名卷 生产环境、多容器共享
匿名卷 临时测试
绑定挂载 开发调试、配置文件挂载
tmpfs 缓存、敏感临时数据