卷(volumes)绑定挂载(bind mounts) 允许您在主机和容器之间共享文件,这样即使在容器停止后也可以持久存储数据。

如果在 Linux 上运行 Docker,那么还有第三种选择:tmpfs 挂载。当您创建带有 tmpfs 挂载的容器时,容器可以在容器的可写层之外创建文件。

与卷和绑定挂载不同,tmpfs 挂载是临时的,只存留在主机内存中。当容器停止时,tmpfs 挂载将被删除,在那里写入的文件不会被持久化。

这对于临时存储您不想在主机或容器可写层中持久存储的敏感文件非常有用。

tmpfs 挂载的局限性

  • 不同于卷和绑定挂载,不能在容器之间共享 tmpfs 挂载。
  • 这个功能只有在 Linux 上运行 Docker 时才可用。

选择 --tmpfs--mount 标记

最初,--tmpfs 标记用于独立容器,--mount 标记用于集群服务。但是从 Docker 17.06 开始,您还可以将 --mount 与独立容器一起使用。通常,--mount 标记表达更加明确和冗长。最大的区别是,--tmpfs 标记不支持任何可配置的选项。

  • --tmpfs: 设置 tmpfs 挂载不允许您指定任何可配置选项,并且只能与独立容器一起使用。
  • --mount:由多个键-值对组成,,每个键-值对由一个 <key>=<value> 元组组成。--mount 语法比 --tmpfs 更冗长:
    • 挂载的类型(type),可以是 bindvolume 或者 tmpfs。本主题讨论 tmpfs,因此类型(type)始终为 tmpfs
    • 目标(destination),将容器中 tmpfs 挂载设置的路径作为其值。可以用 destinationdst 或者 target 来指定。
    • tmpfs-sizetmpfs-mode 选项。请查看下文的 指定 tmpfs 选项

下面的示例尽可能同时展示 --mount--tmpfs 两种语法,并且先展示 --mount

--tmpfs--mount 行为之间的差异

  • --tmpfs 标记不允许指定任何可配置选项。
  • --tmpfs 标记不能用于集群服务。对于集群服务,您必须使用 --mount

在容器中使用 tmpfs 挂载

要在容器中使用 tmpfs 挂载, 请使用 --tmpfs 标记, 或者使用带有 type=tmpfsdestination 选项的 --mount 标记。没有用于 tmpfs 挂载的源(source)。

下面的示例在 Nginx 容器中的 /app 创建一个 tmpfs 挂载。第一个例子使用 --mount 标记,第二个使用 --tmpfs 标记。

--mount

$ docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app \
nginx:latest

--tmpfs

$ docker run -d \
-it \
--name tmptest \
--tmpfs /app \
nginx:latest

通过运行 docker container inspect tmptest 来验证挂载是否是 tmpfs 挂载,查看 Mounts 部分:

"Tmpfs": {
"/app": ""
},

删除容器:

$ docker container stop tmptest

$ docker container rm tmptest

指定 tmpfs 选项

tmpfs 挂载允许两个配置选项,两个选项都不是必需的。 如果需要指定这些选项,则必须使用 --mount 标记,因为 --tmpfs 标记不支持。

选项 描述
tmpfs-size tmpfs 挂载的大小(以字节为单位)。默认无限制。
tmpfs-mode tmpfs 的八进制文件模式。例如,7000770。默认为 1777 或全局可写。

下面的示例将 tmpfs-mode 设置为 1770,因此在容器中它不是全局可读的。

docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
nginx:latest

作者 : Docker 官网

译者 : 技术译民

出品 : 技术译站

链接 : 英文原文

Docker 基础知识 - 使用 tmpfs 挂载(tmpfs mounts)管理应用程序数据的更多相关文章

  1. Docker 基础知识 - 使用绑定挂载(bind mounts)管理应用程序数据

    绑定挂载(bind mounts)在 Docker 的早期就已经出现了.与卷相比,绑定挂载的功能有限.当您使用绑定挂载时,主机上的文件或目录将挂载到容器中.文件或目录由其在主机上的完整或相对路径引用. ...

  2. Docker03 Docker基础知识、Docker实战

    1 Docker基础知识 1.1 什么是Docker Docker是一个可以装应用的容器,就像杯子可以装水.书包可以装书一样:docker官网 Docker是Docker公司开发的,并开源到GitHu ...

  3. Docker进阶之七:管理应用程序数据

    管理应用程序数据:Volume Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bind mounts和tmpfs. volumes:Docker管理宿主机文件系统的一部分( ...

  4. [转] docker基础知识之挂载本地目录

    [From] https://blog.csdn.net/huludan/article/details/52641090 https://my.oschina.net/piorcn/blog/324 ...

  5. Docker 基础知识 - 使用卷(volume)管理应用程序数据

    卷(volumes)是 Docker 容器生产和使用持久化数据的首选机制.绑定挂载(bind mounts)依赖于主机的目录结构,卷(volumes)完全由 Docker 管理.卷与绑定挂载相比有几个 ...

  6. docker学习---docker基础知识

    目录 docker的基础 1.安装docker 2.使用镜像 3.镜像迁移|导入和导出 4.docker Hub介绍 5.搭建私有镜像仓库 5.1.docker开源的镜像分发工具--docker Re ...

  7. Docker 基础知识 - Docker 概述

    Docker 是一个开发.发布和运行应用程序的开放平台.Docker使您能够将应用程序与基础架构分离,以便快速交付软件.有了 Docker,你可以像管理应用程序一样管理你的基础设施.通过利用 Dock ...

  8. Docker基础知识及入门

    什么是Docker? Docker是由dotcloud公司使用golang语言进行开发的,基于Linux内核的 cgroup,namespace,以及OverlayFS类的Union FS等技术,对进 ...

  9. docker 基础知识分享ppt

    给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx

随机推荐

  1. 从零开始学Electron笔记(二)

    在之前的文章我们简单介绍了一下Electron可以用WEB语言开发桌面级应用,接下来我们继续说一下Electron的菜单创建和事件绑定. 我们接上一章的代码继续编写,上一章代码 https://www ...

  2. 北航2018级算法期末上机实录随笔1st

    简单记录下题目类型和做题情况,理性复习同时也希望提供一些参考 题目描述 共计八个题目,按照助教的划分,题目分类如下 一个签到(二分查找),两个板子(活动选择.KMP(洛谷kmp模板题)),一个板子变形 ...

  3. java 面向对象(十):关键字:this

    1.可以调用的结构:属性.方法:构造器2.this调用属性.方法:this理解为:当前对象 或 当前正在创建的对象 2.1 在类的方法中,我们可以使用"this.属性"或" ...

  4. python 并发专题(十):基础部分补充(二)线程

    什么是线程 标准描述开启一个进程:开启一个进程:进程会在内存中开辟一个进程空间,将主进程的资料数据全部复制一份,线程会执行里面的代码. ***进程是资源单位, 线程是执行单位:是操作系统调度的最小单元 ...

  5. python 面向对象专题(三):继承

    目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生类,A类就称为父类,超类,基类 种 ...

  6. Flex移动布局中单行和双行布局的区别以及使用

    这里是单行布局 使用ul>li  来布局 <ul class="local-nav">         <li>             <a  ...

  7. JavaScript图形实例:平面镶嵌图案

    用形状.大小完全相同的一种或几种平面图形进行拼接,彼此之间不留空隙.不重叠地铺成一片,就叫做这几种图形的平面镶嵌. 1.用一种多边形实现的平面镶嵌图案 我们可以采用正三角形.正方形或正六边形实现平面镶 ...

  8. 用Graphviz画简单依赖图示例

    代码: digraph module { 0 [label="global.h"]; 1 [label="bst_operator.c"]; 2 [label= ...

  9. bzoj2288【POJ Challenge】生日礼物*

    bzoj2288[POJ Challenge]生日礼物 题意: 给一个序列,求不超过m个连续的部分,使元素和最大.序列大小≤100000 题解: 先把连续的正数和负数合并起来,接着如果正数个数小于m则 ...

  10. 利用tox打造自动自动化测试框架

    什么是tox tox官方文档的第一句话 standardize testing in Python,意思就是说标准化python中的测试,那是不是很适合测试人员来使用呢,我们来看看他究竟是什么? 根据 ...