docker容器数据存储之 tmpfs mount 详解

本文详细介绍了Docker容器中tmpfs挂载的使用,tmpfs存储只存在于宿主机内存中,非持久化。通过--mount或--tmpfs参数使用,适用于临时数据存储。tmpfs挂载在容器停止后会自动移除,避免了数据丢失。文章还提到了其他数据持久化方案,如Volumes和Bind mounts。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker容器数据持久化——tmpfs mount 详解

阅读本文前,希望你已经对docker容器数据持久化相关问题及解决方案,有初步的了解,具体可以参考以下文章:

了解其他几种容器数据存储方案具体可以参考以下文章:

默认容器的数据的读写发生在容器的存储层,当容器被删除时其上的数据将会丢失。所以我们应该尽量保证容器存储层不发生写操作,为了实现数据的持久化存储我们需要选择一种方案来保存数据,当前有以下几种方式:

  • Volumes
  • Bind mounts
  • tmpfs mounts

无论你选择哪种mount类型,从container内部看没有区别,它们都是目录或者文件。数据都是寄存在宿主机上,只不过具体位置有所区别,如下图:

 

tmpfs mount:tmpfs类型文件与普通文件的区别是只存在于宿主机内存中,不会持久化。

Volumes和Bind mounts模式使我们能够在宿主机和容器间共享文件从而我们能够将数据持久化到宿主机上,以避免写入容器存储层带来的容器停止后数据的丢失的问题。

如果你使用linux运行Docker,那么避免写入数据到容器存储层还有一个方案:tmpfs mounts。

tmpfs mounts,顾名思义,是一种非持久化的数据存储。它仅仅将数据保存在宿主机的内存中,一旦容器停止运行,tmpfs mounts会被移除,从而造成数据丢失。

命令解析 --mount 或 --tmpfs

使用--mount参数时,需要指定type=bind

1、镜像run的使用 加上参数配置
2、 commit提交副本镜像,重新启动新镜像加上参数配置(针对容器已经有数据的情况下)

--mount

由多个名值对组成,逗号分隔,每个键值由 = 元组组成。–mount 语法比 -v 或 --volume更冗长,但键的顺序并不重要,并且标志的值更易于理解

上面的例子将宿主机上的/root文件夹挂载到容器中的/tmp文件夹。 

$ docker run -itd --name tmptest --mount type=tmpfs,destination=/app nginx:latest
  • 要挂载的类型 type,可以是 bindvolumetmpfs
  • 要挂载的源 source,对于有名字的卷,这里是卷的名字。对于匿名卷忽略这个字段。可以指定为 src 或 source。
  • 要挂载的目的地 destination,将文件或目录挂载在容器中的路径作为其值。 可能被指定为 destinationdst 或 target
  • 只读选项 readonly,这个选项会使得挂载到容器中的绑定挂载只读。
  • volume-opt可以多次指定的选项采用键值对,该键值对由选项名称及其值组成。
  • 最后的/bin/bash,表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可

tmpfs mounts 可选选项

OptionDescription
tmpfs-size挂载的tmpfs的字节数,默认不受限制
tmpfs-modetmpfs的文件模式,例如700或1700.默认值为1777,这意味着任何用户都有写入权限
docker run -itd \
  --name tmptest \
  --mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
  nginx:latest

 

--tmpfs

使用--tmpfs参数无法指定任何其他的可选项,并且不能用于Swarm Service(集群节点服务)。

$ docker run -itd --name tmptest --tmpfs /app nginx:latest

使用docker container inspect tmptest命令,然后查看Mounts部分可以看到:

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

 

tmpfs mounts使用场景

请参考这篇文章:Docker容器数据持久化问题及解决方案

如果有兴趣了解更多详细资料,具体请查看官方文档:https://docs.docker.com/storage/volumes/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值