docker数据量与挂载的主机目录

2024-01-08

我们可以在docker中拥有一个数据卷:

$ docker run -v /path/to/data/in/container --name test_container debian
$ docker inspect test_container
...
Mounts": [
    {
        "Name": "fac362...80535",
        "Source": "/var/lib/docker/volumes/fac362...80535/_data",
        "Destination": "/path/to/data/in/container",
        "Driver": "local",
        "Mode": "",
        "RW": true
    }
]
...

但如果数据量位于/var/lib/docker/volumes/fac362...80535/_data,这与使用挂载文件夹中的数据有什么不同吗-v /path/to/data/in/container:/home/user/a_good_place_to_have_data?


尽管使用卷和绑定安装感觉相同(唯一的变化是目录的位置),但行为上存在差异。

卷与绑定安装

  • 通过 Bind Mount,可以将文件或目录挂载到主机被安装到容器中。文件或目录由其在主机上的完整或相对路径引用。
  • 使用 Volume,创建一个新目录在 Docker 的存储目录中在主机上,以及Docker 管理该目录的内容。

卷相对于绑定安装的优势:

  • 卷比绑定安装更容易备份或迁移。
  • 您可以使用 Docker CLI 命令或 Docker API 管理卷。
  • 卷适用于 Linux 和 Windows 容器。
  • 卷可以在多个容器之间更安全地共享。
  • 卷驱动程序允许您将卷存储在远程主机或云提供商上、加密卷的内容或添加其他功能。
  • 新卷的内容可以由容器预先填充。

编辑(2019 年 9 月 9 日):
根据 @Sebi2020 评论,绑定挂载更容易备份。 Docker 不提供任何备份卷的命令。您必须使用带有绑定安装的临时容器来创建备份。

Volumes https://docs.docker.com/storage/volumes/

由 Docker 创建和管理。您可以显式创建卷 使用 docker volume create 命令,或者 Docker 可以创建卷 在容器或服务创建期间。

创建卷时,它存储在计算机上的目录中 Docker 主机。当您将卷安装到容器中时,这 目录是安装到容器中的内容。这是如同 绑定安装的工作方式,除了卷由 Docker 与主机的核心功能隔离 机器。

给定的卷可以同时安装到多个容器中。 当没有正在运行的容器正在使用某个卷时,该卷仍然是 Docker 可用且不会自动删除。您可以删除 使用 docker Volume prune 删除未使用的卷。

当您安装卷时,它可能是命名的或匿名的。匿名的 首次安装卷时未给出明确的名称 到容器中,因此 Docker 给它们一个随机名称,即 保证在给定的 Docker 主机中是唯一的。除了名字之外, 命名卷和匿名卷的行为方式相同。

卷还支持使用卷驱动程序,它允许您 将您的数据存储在远程主机或云提供商等上 的可能性。

绑定坐骑 https://docs.docker.com/storage/bind-mounts/

自 Docker 诞生之初就可用。绑定安装数量有限 功能与体积相比。当您使用绑定挂载时,文件 或者将主机上的目录挂载到容器中。文件 或目录由其在主机上的完整路径引用。这 文件或目录不需要已存在于 Docker 主机上。 如果尚不存在,则会根据需要创建它。绑定安装非常 高性能,但它们依赖于主机的文件系统 可用的特定目录结构。如果您正在开发新产品 Docker 应用程序请考虑使用命名卷。你不能 使用 Docker CLI 命令直接管理绑定挂载。

还有tmpfs mounts.

tmpfs 挂载 https://docs.docker.com/storage/tmpfs/

A tmpfs mount is not persisted on disk, either on the Docker host or within a container. It can be used by a container during the lifetime of the container, to store non-persistent state or sensitive information. For instance, internally, swarm services use tmpfs mounts to mount secrets into a service’s containers.
tmpfs on the Docker host

参考:
https://docs.docker.com/storage/ https://docs.docker.com/storage/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker数据量与挂载的主机目录 的相关文章

随机推荐

  • 从某个节点打开事件查看器

    打开显示特定节点详细信息的 Windows 事件查看器的命令是什么 例如 如果我只是使用eventvwr命令 它会打开选 择根节点的 UI 我想Application打开时选择的节点或任何其他节点 可以通过编程方式配置吗 Thanks 要查
  • 如何在 Flask-SQLAlchemy 中同时设置一对多和一对一关系?

    我试图在 Flask SQLAlchemy 中同时创建一对一和一对多关系 我想实现这个目标 一个群组有许多成员和一名管理员 这是我所做的 class Group db Model id db Column db Integer primar
  • iPhone - 将 CTFont 转换为 UIFont?

    我正在尝试将 CTFont 转换为 UIFont 而不丢失任何样式和属性 例如 字体名称 字体大小 字体颜色 下划线 Bold Italic etc CTFontRef ctFont NSString fontName NSString C
  • CSS:如何让输入字段自动调整其宽度

    我有一个名为包装器的 div 它使用 margin 属性水平居中 该包装器的宽度是固定的 在该包装器内 我有一个 a 标签 后跟一个输入字段 我正在寻找的是让输入字段的宽度自动调整为右侧的剩余宽度 直到包装器的边框 我想避免以像素为单位定义
  • JavaFX TableView 中的属性绑定不起作用

    我跟踪了许多链接并找到了在表视图中显示复选框的解决方案 但我无法更改表视图中复选框的值 我关注的链接 如何在 JavaFX 中将复选框添加到 TableView https stackoverflow com questions 72176
  • 更改 3D 绘图的垂直 (z) 轴的位置

    我正在 Python 中使用 Matplotlib 绘制一些 3D 曲面图 并注意到一个恼人的现象 根据我设置视点 相机位置 的方式 垂直 z 轴在左侧和右侧之间移动 下面是两个例子 示例 1 轴左 http i imagebanana c
  • 如何在flutter中使用工作管理器运行后台进程?

    我想使用 Flutter Workmanager 我在 kt 中做了引用的配置 如下所示 package com example mybackprocess import be tramckrijte workmanager Workman
  • Android“后退”按钮操作

    我可以将默认 Android 后退 按钮的操作分配给另一个按钮吗 我的意思是 无需编写代码 是否有预定义的 返回 方法 Thanks 按钮添加的onClickonBackPressed public void onClick onBackP
  • 在命令行上获取 git-commit-ids

    跑步时git commit fixup beefca7e或者当在提交消息中引用先前的提交时 我必须在笨拙的工作流程中使用鼠标 我使用bash 打开一个新的终端选项卡 窗口 窗格 git log oneline graph 扫描列表以查找相关
  • 如何增加UIProgressView的高度

    我正在创造UIProgressView from nib 我想增加它的高度 但它固定为 9 对于iPad我需要增加它的高度 怎样才能做到呢 使用 CGAffineTransform 更改尺寸 CGAffineTransform transf
  • 哪个先出现——finally 还是 catch 块?

    考虑以下测试用例 public class Main static int a 0 public static void main String args try test System out println test2 catch Ex
  • 获取 og:image 元属性的最佳方法是什么[重复]

    这个问题在这里已经有答案了 我正在尝试在我的网站中显示 rss feed 链接 一切顺利 但需要很长时间才能获得og image财产通过使用file get contents 方法 还有其他方法可以获取元标记属性吗 Python 有助于更快
  • 如何将 JSONObject 转换为自定义 Java 类?

    在Java中 使用 json simple https code google com p json simple 我已经成功解析了使用 JSON stringify 在 JavaScript 中创建的 JSON 字符串 它看起来像这样 t
  • 所有 SuppressWarnings 值? [复制]

    这个问题在这里已经有答案了 如果有一个包含可以与 java 中的 SuppressWarnings 一起使用的所有值的列表 那就太好了 如果这些值取决于编译器 可以说 netbeans 中的 ant 那么 ant 不应该提供所有支持值的完整
  • 执行 expo build:ios 时 Apple Developer Portal 中的身份验证失败

    我正在尝试自动配置通过 Gitlab CI 使用 Expo 构建 iOS 应用程序 这是我正在使用的命令 expo login u expo user p expo pass expo build ios non interactive a
  • JSF MVC 框架中的 MVC 是什么组件?

    JSF MVC框架中谁是模型 视图和控制器 这取决于观点 双关语 在总体架构图中 您自己的 JSF 代码是V M 业务领域 服务层 例如EJB JPA DAO V 您的 JSF 代码 C FacesServlet 在开发人员图中 架构V又可
  • 为什么 ASCII 表中大写字母位于小写字母之前?

    在我的一次面试中 面试官问我为什么ASCII表中大写字母在小写字母之前 我在google com上搜索但没有找到任何结果 有人能给我答案吗 多谢 我只是猜测 但我想这是因为最早的字符集根本没有小写字母 Baudot 电报码只有 5 位 CD
  • 从图像文件夹加载数组 - xcode

    我在将图像从文件加载到数组中时遇到一些问题 我使用了我在这里找到的问题的组合 但我没有想法 我对 Objective C 很陌生 对其余的都生疏了 我的 viewDidLoad 只是调用我的 showPics 方法 并且为了测试目的 我让
  • 如何在map函数中使用useEffect?

    我在 Firebase 中有两个表 Vouchers 和 ClaimedVouchers 我正在尝试显示未出现在 ClaimedVouchers 表中的优惠券 因此 我有一个查询获取所有优惠券 然后另一个查询检查它们是否已被认领 如果已认领
  • docker数据量与挂载的主机目录

    我们可以在docker中拥有一个数据卷 docker run v path to data in container name test container debian docker inspect test container Moun