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
相关推荐
boonya2 小时前
Embedding模型与向量维度动态切换完整方案
java·数据库·embedding·动态切换大模型
宁波阿成2 小时前
族谱管理系统架构分析与亮点总结
java·系统架构·vue·ruoyi-vue·族谱
姬成韶2 小时前
BUUCTF--[RoarCTF 2019]Easy Java
java·网络安全
组合缺一2 小时前
Solon AI Harness 首次发版
java·人工智能·ai·llm·agent·solon
AlunYegeer2 小时前
MyBatis 传参核心:#{ } 与 ${ } 区别详解(避坑+面试重点)
java·mybatis
少许极端3 小时前
算法奇妙屋(四十)-贪心算法学习之路7
java·学习·算法·贪心算法
危笑ioi3 小时前
helm部署skywalking链路追踪 java
java·开发语言·skywalking
夕除3 小时前
Mysql--15
java·数据库·mysql
smileNicky3 小时前
Linux 系列从多节点的catalina 日志中统计设备调用频次
java·linux·服务器