docker 创建和使用存储卷相关内容

Docker 存储卷用于持久化数据,可以独立于容器生命周期。

docker 创建存储卷,查看存储卷 ,挂载存储卷,删除存储卷,具体如下:

1️⃣ 创建存储卷

bash 复制代码
# 创建一个名为 my_volume 的存储卷
docker volume create my_volume

其他的参数

bash 复制代码
docker volume create \
  --driver local \   # 使用本地卷驱动
  --label project=demo \  # 添加标签
  my_volume

例如:使用其他机器的存储

bash 复制代码
docker volume create \
   --driver local \
   --opt type=cifs \
   --opt device=//192.168.10.88/share-data \
   --opt "o=username=Administrator,password=123456,domain=domain" \
   share-data

2️⃣ 查看存储卷

查看本地所有存储卷:

bash 复制代码
docker volume ls

输出示例:

bash 复制代码
DRIVER VOLUME NAME
local my_volume
local another_volume

查看某个卷的详细信息:

bash 复制代码
docker volume inspect my_volume

输出示例:

bash 复制代码
[
    {
        "Name": "my_volume",
        "Driver": "local",
        "Mountpoint": "/home/data/docker/volumes/my_volume/share-data",
        "Labels": {
            "project": "demo"
        },
        "Scope": "local"
    }
]

这里 Mountpoint 就是卷在宿主机上的实际路径。


3️⃣ 挂载存储卷

创建容器时挂载卷,使用 -v--mount

方式 1:简洁写法

bash 复制代码
docker run -it --name my_container -v my_volume:/app/data ubuntu /bin/bash
  • my_volume:存储卷名称
  • /app/data:容器内挂载路径

容器内 /app/data 的数据会持久化到 my_volume

方式 2:推荐写法(更可读)

bash 复制代码
docker run -it --name my_container \
  --mount source=my_volume,target=/app/data \
  ubuntu /bin/bash

建议在生产环境使用 --mount 方式,语义更清晰。

如果需要将存储卷挂载到正在运行的容器中,可以通过 docker commitdocker run 组合实现,因为直接修改运行中容器的挂载点较为复杂。

停止当前容器(假设容器名为 my_container):

bash 复制代码
docker stop my_container

提交容器为新的镜像:

bash 复制代码
docker commit my_container my_new_image

基于新镜像重新运行容器,并挂载存储卷:

bash 复制代码
docker run -d --name my_new_container -v my_volume:/path/in/container my_new_image

直接创建并挂载存储卷到新容器

如果是新容器,可以直接在运行命令中创建并挂载存储卷:

bash 复制代码
docker run -d --name my_container -v my_volume:/path/in/container my_image

验证挂载是否成功

进入容器查看挂载点:

bash 复制代码
docker exec -it my_container ls /path/in/container

使用绑定挂载(Bind Mount)

如果需要挂载主机目录而非 Docker 管理的存储卷,可以使用绑定挂载:

bash 复制代码
docker run -d --name my_container -v /host/path:/container/path my_image

4️⃣ 删除存储卷

注意:删除卷会清除卷内所有数据

查看卷是否在使用

bash 复制代码
docker ps -a --filter volume=my_volume

确保没有容器正在使用这个卷。

删除卷

bash 复制代码
docker volume rm my_volume

删除所有未使用的卷(谨慎):

bash 复制代码
docker volume prune

🔹 总结操作流程

  1. 创建卷:docker volume create my_volume
  2. 查看卷:docker volume ls / docker volume inspect my_volume
  3. 挂载卷:docker run -v my_volume:/app/data--mount source=my_volume,target=/app/data
  4. 删除卷:docker volume rm my_volume / docker volume prune
相关推荐
ba_pi18 分钟前
springAI2.0接入mcp读取mysql
java·agent·spring ai
羑悻的小杀马特19 分钟前
从写 YAML 到集群自愈:KES-Operator 把 KES 集群接进 Kubernetes 原生体系
运维·数据库·容器·kubernetes
宸津-代码粉碎机24 分钟前
Java面试核心:JVM三大GC垃圾回收算法原理与生产场景落地分析
java·大数据·人工智能·python·spring
Ivanqhz27 分钟前
BPE(Byte Pair Encoding) 算法
java·服务器·网络·深度学习·神经网络
愛芳芳30 分钟前
Swagger2 多环境动态配置实战指南
java·后端·maven·springboot·swagger
huaweichenai34 分钟前
spring boot实现任务异步处理(队列)
java·spring boot
MZA66637 分钟前
实战:基于 XXL-JOB + 策略模式 + Nacos 配置化的 CSV 导出任务系统设计
java·spring boot·mybatis
邪修king42 分钟前
Re:Linux 系统篇(二十九):动静态库Chapter2:动态库深度辨析 —— 核心本质、制作流程、双阶段查找模型与排错指南
android·java·linux·开发语言
泡海椒1 小时前
告别 iText 繁杂配置:jquick-pdf 极简 PDF 生成实战(零基础上手)
java·开发语言·pdf
Bs_MoneyMagnet5 小时前
基于springboot+vue的滑雪场票务与装备租赁系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计