当前位置: 首页 > news >正文

4、docker数据卷管理命令 | docker volume

1、命令总览

命令作用出现频率备注
★ docker volume create新建卷-d 指定驱动,-o 指定驱动选项
★ docker volume ls列出卷--filter dangling=true 查孤儿卷
★ docker volume inspect查看卷详情输出 JSON,可加 --format
★ docker volume rm删除卷只能删已停止容器的卷
docker volume prune批量清理孤儿卷危险操作,会二次确认
docker volume cp宿主机⇄卷 拷文件需 24.0+ 的 CLI,等同于 docker cp
docker volume update修改卷标签/驱动参数仅少数驱动支持
docker volume use在 docker run 里使用卷其实是 --mount 或 -v 的语法糖

卷与 bind mount 区别:卷由 Docker 管理,迁移/备份更方便;bind mount 直接映射宿主机路径,性能稍高但可移植性差。

2、docker volume create

用于在本地或远程驱动上“先创建、后使用”一个持久化卷;创建完即可通过 docker run -v / --mount 把卷挂载到容器中。

docker volume create [OPTIONS] [VOLUME_NAME]
选项作用示例
-d, --driver指定卷驱动(默认 local)-d nfs
--label加标签,便于过滤--label env=prod
-o, --opt驱动级参数-o type=tmpfs -o device=tmpfs

docker volume create
├─ --driver  , -d          ⭕ 插件名(local|nfs|ceph|rbd|ebs|oss...)
├─ --name                   卷名,省略时自动生成 ID
├─ --label                  ⭕ key=value 元数据,可多次出现
└─ --opt     , -o           ⭕ 驱动级键值对,出现次数不限
├─ 当 driver = local
│   ├─ type      = none | bind | tmpfs | nfs | btrfs | ext4 | xfs ...
│   ├─ device    = <路径|设备|远程地址>
│   ├─ o         = <挂载选项字符串,逗号分隔>
│   │   ├─ 通用  : rw/ro, relatime, sync, uid=..., gid=..., size=...
│   │   ├─ nfs   : addr=..., vers=3|4, proto=tcp|udp, timeo=600 ...
│   │   └─ tmpfs : size=100m, mode=1770, nr_inodes=1m ...
│   └─ 其他 local-only 键
│       ├─ size  = 100m            # 某些驱动支持配额
│       └─ keyfile = /path/key     # 加密卷
└─ 当 driver ≠ local
├─ 各云厂商/分布式存储自有键
│   ├─ ebs      : size, iops, type(gp2|io1), encrypted, kms-key-id ...
│   ├─ ceph/rbd : pool, image, user, secret ...
│   ├─ alicloud/oss : bucket, accesskeyid, accesskeysecret, region ...
│   └─ glusterfs : volid, servers, gid, uid, direct-mount-mode ...
└─ 任意自定义键(由第三方驱动文档定义)

# 创建名为 myvol 的本地卷
docker volume create myvol# 验证
docker volume ls
docker volume inspect myvol# 使用 vieux/sshfs 驱动,把远端目录挂成卷
docker volume create \--driver vieux/sshfs \--opt sshcmd=user@192.168.1.10:/data \--opt password=secret \sshfs-vol# 一次性加多个标签
docker volume create \--label project=blog \--label env=staging \blog-uploads# 按标签过滤
docker volume ls --filter label=project=blog# 创建 100 MB 的 tmpfs 卷(内存盘)
docker volume create \--driver local \--opt type=tmpfs \--opt device=tmpfs \--opt o=size=100m \memvol# 创建 ext4 格式的 loop 设备卷
docker volume create \--driver local \--opt type=none \--opt o=bind \--opt device=/dev/loop0 \loopdisk# 直接创建匿名卷(Docker 自动生成一串 ID 作为名字)
docker volume create
# 典型用法:docker run -v /data ... 会自动产生匿名卷

3、docker volume ls

# 简单列出所有卷
docker volume ls# 只显示没有被任何容器引用的“孤儿卷”
docker volume ls --filter dangling=true# 根据 label 过滤
docker volume ls --filter label=env=prod# 按创建时间倒序
docker volume ls --format "table {{.Name}}\t{{.Driver}}\t{{.CreatedAt}}"

4、docker volume inspect

# 查看卷完整 JSON
docker volume inspect html# 只取 Mountpoint 字段(宿主机目录)
docker volume inspect html \--format '{{.Mountpoint}}'# 同时查看多个卷
docker volume inspect html prod-data

5、docker volume rm

# 删除单个卷
docker volume rm html# 强制删除多个卷(即使被引用也会报错)
docker volume rm prod-data logs# 利用 xargs 批量删除孤儿卷
docker volume ls -q -f dangling=true | xargs docker volume rm

6、docker volume prune

# 交互式清理所有孤儿卷
docker volume prune# 非交互(脚本里用)
docker volume prune -f

7、docker volume cp (CLI ≥ 24.0)

# 把宿主机文件拷进卷
echo "hello" > /tmp/index.html
docker volume cp /tmp/index.html html:/index.html# 把卷里的目录拷回宿主机
docker volume cp html:/var/log/nginx ./logs

8、docker volume update

# 仅某些驱动支持,给卷追加标签
docker volume update prod-data --label-replace env=staging

9、在容器中使用卷(run / compose)

# 方式1:-v 简写(宿主机路径可省略,则自动用卷)
docker run -d \--name web \-v html:/usr/share/nginx/html \nginx:alpine# 方式2:--mount 更明确(推荐)
docker run -d \--name db \--mount type=volume,src=mysql-data,dst=/var/lib/mysql,volume-driver=local \mysql:8# 只读挂载
docker run -d \--name app \--mount type=volume,src=config,dst=/etc/app,readonly \myapp:latest# docker-compose.yml 示例
version: "3.9"
services:api:image: myapivolumes:- type: volumesource: uploadstarget: /app/uploadsvolume:nocopy: true          # 禁止初始化复制
volumes:uploads:driver: local

10、备份 & 恢复卷数据(经典方案)

# 备份:启动一个临时容器把卷打包
docker run --rm \-v html:/data \-v $(pwd):/backup \alpine tar czf /backup/html-backup.tar.gz -C /data .# 恢复:反向操作
docker run --rm \-v html:/data \-v $(pwd):/backup \alpine sh -c "cd /data && tar xzf /backup/html-backup.tar.gz"

http://www.lryc.cn/news/612521.html

相关文章:

  • docker run 入门到进阶:容器启动背后的门道
  • PCB工艺-四层板制作流程(简单了解下)
  • C++与C语言实现Stack的对比分析
  • 如何快速翻译PPT中的文字(或简繁体转换)
  • PI 思维升级 解密电容器的选择与布局策略,带您追求极致平坦的电源阻抗
  • 【VTK】绘制圆锥进行简单的几何渲染
  • 图论(邻接表)DFS
  • AI领域的三箭齐发之夜 - genie3,gpt-oss, Opus 4.1
  • go与grpc
  • 【软考系统架构设计师备考笔记5】 - 专业英语
  • Xcode 26 如何在创建的 App 包中添加特定的目录
  • Linux——静态网络,创建用户
  • 基于PHP的快递管理系统的设计与实现
  • android10~16变更一览和开发者兼容应对
  • css优化、提升性能方法都有哪些?
  • React:生命周期
  • antd组件select下拉数据分页加载
  • LeetCode 分类刷题:611. 有效三角形的个数
  • 【前端】Vite中import.meta功能详解
  • 深度修改elementUI样式思路
  • 《Day2-PyTorch Tensor 从入门到实践:核心操作与避坑指南》
  • 磁悬浮转子变转速工况下的振动抑制全解析
  • Conditional Modeling Based Automatic Video Summarization
  • 云平台托管集群:EKS、GKE、AKS 深度解析与选型指南-第二章
  • [Python 基础课程]猜数字游戏
  • HIVE 窗口函数处理重复数据
  • 【C/C++】形参、实参相关内容整理
  • GISBox中OSGB数据转3DTiles格式指南
  • 开源流媒体服务器ZLMediaKit 的Java Api实现的Java版ZLMediaKit流媒体服务器-二开视频对话
  • java 之 继承