使用tmpfs挂载

预计阅读时间:4分钟

绑定挂载使您可以在主机和容器之间共享文件,以便即使容器停止后也可以保留数据。

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

与卷和绑定挂载相反,tmpfs挂载是临时的,并且仅持久保存在主机内存中。当容器停止时,tmpfs挂载将被删除,并且在该容器中写入的文件将不会保留。

Docker主机上的tmpfs

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

tmpfs安装的局限性

  • 与卷和绑定挂载不同,您不能tmpfs在容器之间共享挂载。
  • 仅当您在Linux上运行Docker时,此功能才可用。

选择--tmpfs或--mount标志

总的来说,--mount是更明确和冗长的。最大的区别是该--tmpfs标志不支持任何可配置的选项。

  • --tmpfs:挂载tmpfs挂载而不允许您指定任何可配置的选项,并且只能与独立容器一起使用。

  • --mount:包含多个键值对,以逗号分隔,每个键值对都由一个<key>=<value>元组组成。该--mount语法比更详细--tmpfs

    • type安装件,其可以是bindvolume,或 tmpfs。本主题进行讨论tmpfs,因此类型始终为 tmpfs
    • destination作为其值,其中的路径tmpfs安装被安装在容器中。可以指定为destinationdsttarget
    • tmpfs-sizetmpfs-mode选项。请参阅 tmpfs选项

下面的示例在可能的地方同时显示--mount--tmpfs语法,并--mount首先展示。

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

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

在容器中使用tmpfs挂载

tmpfs在容器中使用安装座,请使用--tmpfs标志,或将 --mount标志与type=tmpfsdestination选项一起使用。没有 sourcetmpfs坐骑。以下示例在Nginx容器中的上创建一个tmpfs安装 /app。第一个示例使用--mount标志,第二个示例使用--tmpfs标志。

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

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

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

卸下容器:

$ docker container stop tmptest

$ docker container rm tmptest

指定tmpfs选项

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

选项 描述
tmpfs-size tmpfs安装的大小(以字节为单位)。默认情况下是无限的。
tmpfs-mode tmpfs的文件模式(八进制)。例如7000770。默认为1777或世界可写。

以下示例将设置tmpfs-mode1770,以使其在容器内不被世界范围内读取。

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

下一步

存储持久性数据持久性tmpfs