当前位置: 首页 > 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.dtcms.com/a/317843.html

相关文章:

  • 【关于Java的对象】
  • vue3 el-dialog自定义实现拖拽、限制视口范围增加了拖拽位置持久化的功能
  • 实战教程:从“对象文件为空“到仓库重生——修复 Git 仓库损坏全记录
  • 大数据存储域——Hive数据仓库工具
  • STM32 APP跳转后无法进入中断
  • QT----不同线程中信号发送了槽函数没反应QObject::connect: Cannot queue arguments of typeXXX
  • C++编程语言:标准库:工具类(Bjarne Stroustrup)
  • Python赋能气象与气候数据分析的生态构建与实战路径
  • Linux中systemd与systemctl管理指南
  • LlaMA_Factory实战微调VL大模型
  • 【数据分享】西藏土壤类型数据库
  • AlphaEarth模型架构梳理及借鉴哪些深度学习领域方面的思想
  • [AI 生成] Spark 面试题
  • 【深度学习】Graph Transformer Networks(GTN,图变换网络)
  • Linux 中 Git 操作大全
  • 测试单节点elasticsearch配置存储压缩后的比率
  • cacti
  • 深入理解C++中的stack、queue和priority_queue
  • 部署 Zabbix 企业级分布式监控笔记
  • C语言高级编程技巧与最佳实践
  • 学习bug
  • R4周打卡——Pytorch实现 LSTM火灾预测
  • 人工智能——深度学习——认识Tensor
  • 工业禁区人员闯入识别准确率↑29%:陌讯动态融合算法实战解析
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘gensim’问题
  • 股票T0程序化交易,高频交易
  • 队列很多时,为什么RocketMQ比Kafka性能好?
  • 河南萌新联赛2025第四场-河南大学
  • 【PZSDR P201MINI】 P201Mini 软件无线电开发板:紧凑型射频系统的性能标杆
  • OpenSCA用户访谈第二期:互联网科技公司如何用OpenSCA“锁”住开源风险?