Docker的数据卷机制

news/2025/2/19 13:00:41/文章来源:https://www.cnblogs.com/autopwn/p/18717704

数据卷是否直接创建在容器中?

1. 数据卷的本质

  • 数据卷并不是直接存储在容器的文件系统中,而是存储在宿主机上,由 Docker 自动管理。
  • 当你使用 -v 参数或者在 Dockerfile 中使用 VOLUME 指令定义一个数据卷时,Docker 会在宿主机上创建一个独立的存储位置(通常在 /var/lib/docker/volumes/ 中),并将这个存储位置映射到容器内的指定路径。
  • 容器只是将宿主机的数据卷挂载到容器内的某个路径上进行访问。

2. 容器内的表现

  • 数据卷挂载到容器中时,会以文件夹的形式表现出来(如 /data1)。虽然看起来像是容器自身的文件夹,但实际上容器只是通过挂载机制访问宿主机上的存储位置。
  • 这意味着,即使容器被删除,只要数据卷没有被手动清理,卷中的数据仍然保留在宿主机上。

宿主机能否看到数据卷?

是的,宿主机可以看到数据卷。只不过,Docker 会将数据卷存储在宿主机特定的目录中,路径通常位于 /var/lib/docker/volumes 下。

查看数据卷内容的步骤

  1. 查看数据卷的挂载点
    运行以下命令,检查容器的挂载点及数据卷信息:

    docker inspect <container-name>
    

    在返回的 JSON 中,找到 Mounts 部分,例如:

    "Mounts": [{"Type": "volume","Name": "d1234567890abcdef","Source": "/var/lib/docker/volumes/d1234567890abcdef/_data","Destination": "/data1","Driver": "local","Mode": "","RW": true,"Propagation": ""}
    ]
    
    • Source 是宿主机上的数据卷存储路径(如 /var/lib/docker/volumes/d1234567890abcdef/_data)。
    • Destination 是数据卷在容器中的挂载点(如 /data1)。
  2. 访问数据卷的存储位置

    • 在宿主机中,可以直接进入 Source 路径查看数据卷的内容。例如:
      ls /var/lib/docker/volumes/d1234567890abcdef/_data
      

注意:匿名卷与命名卷

Docker 中的数据卷有两种方式:匿名卷命名卷

1. 匿名卷

  • 如果你没有显式指定数据卷的名称(如通过命令 -v /data1 或在 Dockerfile 中使用 VOLUME 指令),Docker 会自动创建一个匿名卷。
  • 匿名卷的名称由 Docker 随机生成,例如 d1234567890abcdef,存储在 /var/lib/docker/volumes/ 路径下。
  • 匿名卷的使用可能导致管理不便,因为你无法轻松识别卷的用途。

2. 命名卷

  • 如果在创建数据卷时显式指定了名称(如通过 -v my_data:/data1),Docker 会将其创建为命名卷。

  • 命名卷的管理更简单,你可以通过名称轻松识别它。例如:

    docker volume ls
    

    输出示例:

    DRIVER    VOLUME NAME
    local     my_data
    local     another_volume
    
  • 命名卷也存储在 /var/lib/docker/volumes/ 路径下,但你可以通过名称更容易找到它。


与容器文件系统的区别

需要注意的是,数据卷与容器的普通文件系统是分离的:

  1. 容器文件系统

    • 当你创建并运行一个容器时,容器会有自己的文件系统(基于镜像的只读层和容器的可写层)。
    • 如果容器被删除,其文件系统也会被删除,所有未挂载到数据卷中的数据都会丢失。
  2. 数据卷

    • 数据卷与容器生命周期无关,即使容器被删除,数据卷的内容仍然保留在宿主机上。
    • 它的主要用途是实现数据持久化和容器之间的数据共享。

数据卷的删除

如果需要清理数据卷,可以使用以下命令:

  1. 删除未使用的数据卷
    如果某些数据卷不再被任何容器使用,可以运行以下命令清理:

    docker volume prune
    
  2. 手动删除特定数据卷
    首先列出所有数据卷:

    docker volume ls
    

    然后删除指定的卷:

    docker volume rm <volume-name>
    

总结

  • 数据卷并不是直接存储在容器中,而是存储在宿主机上,通常位于 /var/lib/docker/volumes 下。
  • 容器只是将宿主机上的数据卷挂载到容器的某个路径上作为访问入口。
  • 宿主机可以直接访问这些路径查看数据卷内容。
  • 使用命名卷可以让管理更方便,而匿名卷可能导致管理难度增加。
  • 数据卷的主要优势是数据持久化和容器之间的数据共享,即使容器被删除,数据仍然保留。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/884502.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(自适应手机端)英文外贸网站模板 日用百货网站源码下载

(自适应手机端)英文外贸网站模板 日用百货网站源码下载 PbootCMS内核开发的网站模板,该模板适用于外贸网站模板、日用百货网站源码等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; 自适应移动端,同一个后台,数据即时同步,简单适用!附带测试数据!友好…

Markdown 语法学习

Markdown 语法学习 标题: # + 三级标题 四级标题 字体 hello,world! hello,world! hello,world! hello,world! 引用选择狂神说Java>这是引用分割线图片超链接 博客园 - 开发者的网上家园) 列表A B CA B C表格名字 性别 生日张三 男 1997.1.1李斯 女 1995.7.6代码hello

一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法

1.算法仿真效果 本课题是针对博主原来写的文章《基于MATLAB的一级倒立摆控制仿真,带GUI界面操作显示倒立摆动画,控制器控制输出》的升级。升级内容包括如下几个方面:增加了PI控制器,PD控制器,同时对极点配置,线性二次型,PID,PI及PD五种算法的控制输出曲线进行对比。matlab2…

使用Spring Initializr方式构建Spring Boot项目

按教材 下例选用IntelliJ IDEA 2024.3.3付费版 创建项目JDK版本根据实际情况。启动类简析 package com.example.demo; // 这段代码位于 com.example.demo 这个包下import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBo…

未注册类。WSL 安装似乎已损坏。WslRegisterDistribution failed with error: 0x8007019e/

前言 不知何时,我的wsl环境又坏了。 其实wsl我不怎么用,但是今天突然想用一下docker,但是没有启动成功。 于是乎我试了一下wsl,发现是wsl完全坏了。 之前卸载过wsl的某个子系统,比如ubuntu22,当初想着换24,之后很长一段时间没用过wsl。 尽管我怀疑是这个操作造成的问题,…

清华大学最新力作,DeepSeek 从入门到精通PDF

前几天,我发布了一篇关于 WPS 集成 DeepSeek 的教程,没想到大家的反响非常热烈!很多朋友都表示,通过这篇教程学到了不少关于 DeepSeek 的实用技巧,赶紧点进来看。不过,今天我给大家带来了更猛的干货——清华大学最新发布的 DeepSeek 资料!而且这次的资料更加关注 DeepSe…

安装程序无法自动安装virtual machine

安装VMware Tools 失败 发现在给过旧的系统安装 安装VMware Tools 的时候,会失败,比如 win7、win server2008等。原因 官网的说明,在这里 看不懂的自行翻译: 微软已将 Windows 驱动程序签名更改为自 2019 年 12 月 3 日起仅使用 SHA-2 算法,不支持 SHA-2 代码签名的旧版 W…

尝试在 Kubernetes 集群上用阿里云 GPU 实例部署 Ollama + DeekSeek-R1

在前一篇博文中尝试了使用阿里云 GPU 实例 ECS 单机部署了 DeekSeek-R1 7b 模型 。这篇博文记录一下在 k8s 集群上用阿里云 GPU 实例部署 DeekSeek R1 大模型的尝试过程,部署的也是 deepseek-r1:7b 模型。 先准备一台阿里云 GPU 实例,选用了共享型 GPU 实例 sgn7i,8核31G,4…

基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真

1.程序功能描述 基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真,输出收敛曲线以及三维曲面最高点搜索结果。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3.核心程序for ij = 1:Mgen% 初始化本代最佳适应度及对应解yfit = 0.0;xbest = zeros(1,2); % 初…

Tomasulo 调度算法实现架构分析

虽然早在 1967 年就已经提出了 Tomasulo 调度算法 [1],但网上仍很少找到关于落到模块粒度的教程文档。从零复现一遍成本太大,因此用画原理图的方式做思想实验,尝试理解 Tomasulo 在电路上如何实现。 处理数据 首先明细几个概念指令(Instruction):包含指令类型(ADD、MUL、…

最新VMware Workstation虚拟机下载并安装

[2025年]最新VMware Workstation虚拟机下载并安装 1.最新VMware Workstation下载地址 2024年5月5日之后,VMware workstation不能直接在vmware官网进行下载了,需要在broadcom博通网站上进行下载 博通收购Vmware后(将workstation免费了),如下 旧的地址点击下载的时候会跳转到…

js之prototype

var TestPrototype = function () {this.propA = 1;this.methodA = function() {return this.propA;} }TestPrototype.prototype = {methodB: function() {return this.propA;} }var objA = new TestPrototype();objA.methodA() // 1 objA.methodB() // 1JavaScript 中, 任何函…