前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 基础知识 - 使用 tmpfs 挂载(tmpfs mounts)管理应用程序数据

Docker 基础知识 - 使用 tmpfs 挂载(tmpfs mounts)管理应用程序数据

作者头像
用户8803964
修改2021-07-06 10:41:38
3.6K0
修改2021-07-06 10:41:38
举报
文章被收录于专栏:VVcblog

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

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

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

docker-types-of-mounts-tmpfs
docker-types-of-mounts-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

代码语言:javascript
复制
$ docker run -d \
  -it \
  --name tmptest \
  --mount type=tmpfs,destination=/app \
  nginx:latest

--tmpfs

代码语言:javascript
复制
$ docker run -d \
  -it \
  --name tmptest \
  --tmpfs /app \
  nginx:latest

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

代码语言:javascript
复制
"Tmpfs": {
    "/app": ""
},

删除容器:

代码语言:javascript
复制
$ docker container stop tmptest

$ docker container rm tmptest

§指定 tmpfs 选项

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

选项

描述

tmpfs-size

tmpfs 挂载的大小(以字节为单位)。默认无限制。

tmpfs-mode

tmpfs 的八进制文件模式。例如,700 或 0770。默认为 1777 或全局可写。

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

代码语言:javascript
复制
docker run -d \
  -it \
  --name tmptest \
  --mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
  nginx:latest

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • tmpfs 挂载的局限性
  • 选择 --tmpfs 或 --mount 标记
    • §--tmpfs 和 --mount 行为之间的差异
    • 在容器中使用 tmpfs 挂载
      • §指定 tmpfs 选项
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档