docker从零开始 存储(四)tmpfs挂载

时间:2023-07-04 23:59:02

使用tmpfs挂载

volume和bind mounts允许您在主机和容器之间共享文件,以便即使在容器停止后也可以保留数据。

如果你在Linux上运行Docker,你有第三个选择:tmpfs mounts。使用tmpfs挂载创建容器时,容器可以在容器的可写层外创建文件。

与volume和绑定挂载相反,tmpfs挂载是临时的,并且仅保留在主机内存中。当容器停止时,将tmpfs删除安装,并且不会保留写在那里的文件。

docker从零开始 存储(四)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,因此类型始终如此 tmpfs
    • 将安装在容器中destination的路径作为其tmpfs挂载的值。可以指定为destinationdsttarget
    • tmpfs-typetmpfs-mode选项。

下面的示例显示了可能的语法--mount--tmpfs语法,并--mount首先给出。

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

  • --tmpfs标志不允许您指定任何可配置选项。
  • --tmpfs标志不能与swarm服务一起使用。你必须使用--mount

在容器中使用tmpfs mount

要在容器中使用tmpfs挂载,请使用--tmpfs标志,或使用--mount带有type=tmpfsdestination选项的 标志。没有 source对应tmpfs挂载。以下示例在Nginx容器中创建tmpfs挂载  /app。第一个示例使用--mount标志,第二个示例使用--tmpfs标志。

[root@benjamincloud ~]# docker run -itd --name tmptest --mount type=tmpfs,dst=/app nginx:latest
470d9ad16381d9aed3b1df5c7eaa57b3596b6aedf3042f62f48cb7236da40d8c
[root@benjamincloud ~]# docker run -itd --name tmptest --tmpfs /app nginx:latest
ccb4dd602219130c9863be918a5d44f24615cce2ae0554d54b474ebb1bf6df4c
 

通过运行docker container inspect tmptest并查找该Mounts部分来验证安装是否为 tmpfs mount :

docker从零开始 存储(四)tmpfs挂载

其中 source为空,对应了 上面所说。

指定tmpfs选项

tmpfs安装允许两个配置选项,这两个选项都不是必需的。如果需要指定这些选项,则必须使用该--mount标志,因为该--tmpfs标志不支持它们。

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

以下示例将tmpfs-modeto 设置为1770,以便它在容器中不是世界可读的。

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