Skip to content

绑定挂载(Bind Mount)
命名卷(Data Volume)

介绍看这里

区别绑定挂载(Bind Mount)命名卷(Data Volume)
存储位置直接映射到‌宿主机文件系统的指定路径‌(如 /Users/name/data:/var/lib/postgresql/data);数据完全由用户控制,路径可见。存储在 Docker 管理的 ‌/var/lib/docker/volumes/‌ 目录下,路径由 Docker 自动分配。;数据由 Docker 管理,路径不直接暴露(需 docker volume inspect 查看)。
创建方式在 docker run -v 或 docker-compose.yml 中(也就是services中指定volumes选项)指定宿主机路径:-v /host/path:/container/path;如果宿主机目录不存在,Docker 不会自动创建‌(可能导致错误)。先显式创建卷(可选):docker volume create my_volume再挂载:-v my_volume:/container/path;在docker-compose.yml 中和services平齐额外的volumes选项;如果卷不存在,Docker 会自动创建‌匿名卷或命名卷。
数据生命周期数据‌随宿主机目录存在而存在‌,删除容器不影响数据数据‌独立于容器‌,删除容器后卷仍保留(需手动 docker volume rm 删除
性能与功能性能更高‌(直接读写宿主机文件系统);适合‌开发调试‌(快速修改代码或配置文件);支持挂载单个文件(如 -v /host/config.yml:/app/config.yml性能略低(经过 Docker 存储驱动层)。;适合‌生产环境‌(数据隔离、备份方便);只能挂载目录,不能单独挂载文件
权限管理继承宿主机的文件权限(可能导致容器内权限问题,需 chmod 调整)。Docker 自动设置合理的权限(通常更兼容容器内应用)。
典型使用场景开发时挂载源代码目录;挂载配置文件(如 nginx.conf);需要直接访问宿主机文件(如备份恢复)数据库持久化(如 PostgreSQL、MySQL 数据目录); 多个容器共享数据(如日志集中存储);生产环境需要数据隔离和自动管理
总结灵活、直接,适合开发和明确路径的场景自动化,适合生产环境和数据库持久化