欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > Docker 数据卷(Volume)

Docker 数据卷(Volume)

2025/6/20 9:38:02 来源:https://blog.csdn.net/Fireworkit/article/details/148769857  浏览:    关键词:Docker 数据卷(Volume)

Docker 中的数据卷(Volumes)是容器持久化数据的核心机制。它用于在容器之间共享数据、实现数据持久化、解耦宿主机文件系统,非常关键。下面我将从 基础概念、使用方式、命令详解、最佳实践 四个方面完整讲解。


一、什么是 Docker 数据卷(Volume)

Volumes 的作用:

  • 容器删除后数据仍然保留
  • 多容器共享数据
  • 宿主机与容器之间安全读写
  • 适配数据库、日志、配置文件等持久化需求

二、三种数据卷类型对比

类型写法持久性推荐用法
匿名卷-v /data临时挂载
具名卷-v mydata:/data推荐用于生产持久存储
绑定挂载-v /host/path:/data强依赖宿主配置文件、开发环境调试

三、Docker Volume 命令大全

1. 创建卷

docker volume create mydata

2. 查看卷列表

docker volume ls

3. 查看某个卷信息

docker volume inspect mydata

4. 删除卷(卷未被挂载才可删)

docker volume rm mydata

5. 清理所有未使用的卷

docker volume prune

四、使用示例

示例 1:具名卷挂载

docker run -d \--name mysql \-v mysql-data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 \mysql:5.7

卷名为 mysql-data,数据在 /var/lib/docker/volumes/mysql-data/_data


示例 2:绑定宿主机目录

docker run -d \-v /home/user/nginx/html:/usr/share/nginx/html \nginx

宿主机目录 /home/user/nginx/html 将映射为容器中的网站根目录。


示例 3:docker-compose 中挂载卷

version: '3'
services:redis:image: redisvolumes:- redis-data:/datavolumes:redis-data:

五、Volume 挂载时的注意点

情况说明
容器目录原有数据会消失Volume 挂载会覆盖容器内部原始目录内容(除非 Docker 初始化)
权限问题宿主目录要设好 chmod/chown,尤其数据库等会要求写权限
SELinux/AppArmor 限制某些系统需开启额外策略才能正常挂载主机目录

六、Volume 数据位置

具名卷或匿名卷默认存储在:

/var/lib/docker/volumes/<volume_name>/_data

你可以直接进入该目录查看或备份数据(谨慎操作)。


七、最佳实践

场景推荐方式
数据持久化(MySQL 等)✅ 使用具名卷
配置文件热更新✅ 使用绑定挂载
多容器共享目录✅ 同一个具名卷挂载多个容器
避免宿主依赖❌ 不建议生产环境依赖宿主路径

补充:使用 init 容器初始化卷(K8s 常见)

如果你用 Kubernetes,也可以让 Init 容器先写入数据到卷,再让主容器读取,非常灵活。


总结

命令或概念用法示例
创建具名卷docker volume create mydata
查看所有卷docker volume ls
删除卷docker volume rm mydata
挂载具名卷-v mydata:/data
挂载宿主路径-v /host/path:/container/path

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词