Docker存储
# Docker存储
Docker存储两种方式,注意区分:
- 目录挂载: -v /app/nghtml:/usr/share/nginx/html
- 卷映射:-v ngconf:/etc/nginx
docker run -d -p 99:80 \
-v /app/nghtml:/usr/share/nginx/html \
-v ngconf:/etc/nginx \
--name app03 \
nginx
1
2
3
4
5
2
3
4
5
- 目录挂载 /app/nghtml:/usr/share/nginx/html
- 是将docker容器/usr/share/nginx/html目录->挂载到主机/app/nghtml下,默认以主机目录为主,主机目录内容覆盖容器目录内容
- 卷映射 ngconf:/etc/nginx
- docker容器启动时会将docker中得文件复制到卷存储中,docker容器中保留初始版本
- 是将docker容器/etc/nginx目录下的文件和主机ngconf存储卷进行实时同步,一个修改两者都会实时同步修改,
- 可以通过docker volume inspect 卷名 查看存储位置
- docker默认会将创建的卷存在**/var/lib/docker/volumes/
**目录下
# 卷操作
#创建存储卷
docker volume create 卷名
#查看
docker volume ls
#删除
docker volume rm 卷名
查看卷详情
docker volume inspect 卷名
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 绑定挂载 vs 卷映射对比
| 对比维度 | 绑定挂载 (Bind Mount) | 命名卷 (Named Volume) |
|---|---|---|
| 首次启动行为 | 主机覆盖容器 容器内原有内容消失 | 容器填充卷 容器内原有内容被保留并复制到卷 |
| 数据流向 | 主机 → 容器(覆盖) | 容器 → 卷(初始化) |
| 后续同步 | 双向实时同步 | 双向实时同步 |
| 空目录处理 | 容器内变成空目录 | 容器内保留原有内容 |
| 适用场景 | 开发环境、完全替换配置 用主机内容覆盖容器 | 生产环境、保留默认配置 备份容器原有内容 |
| 数据位置 | 宿主机任意路径/home/user/data | Docker 管理目录/var/lib/docker/volumes/卷名/_data |
| 创建方式 | 需手动创建目录mkdir -p /host/data | Docker 自动创建docker volume create 卷名 |
| 权限管理 | 手动处理 UID/GID 可能出现权限问题 | Docker 自动处理权限 很少出现权限问题 |
| 文件可见性 | 直接在宿主机可见ls /host/data | 需通过命令查看docker volume inspect 卷名 |
| 备份恢复 | 使用系统命令cp、tar、rsync | 使用 Docker 命令docker run --rm -v 卷名:/data alpine tar |
| 跨主机迁移 | 手动复制文件 需保证路径一致 | 配合卷驱动 支持 NFS、云存储等 |
| 容器依赖 | 依赖宿主机路径 路径变更影响容器 | 独立于宿主机路径 容器名变更不影响 |
| 性能 | 直接读写宿主机文件系统 性能较好 | 通过 Docker 存储驱动 略有性能开销 |
Last Updated: 2026/04/01, 17:03:31