tmpfs 挂载

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

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

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

Docker 主机上的 tmpfs

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

tmpfs 挂载的限制

  • 与卷和绑定挂载不同,您不能tmpfs在容器之间共享挂载。
  • 仅当您在 Linux 上运行 Docker 时,此功能才可用。
  • 在 tmpfs 上设置权限可能会导致它们 在容器重新启动后重置。在某些情况下, 设置 uid/gid可以作为解决方法。

选择 --tmpfs 或 --mount 标志

一般来说,--mount更加明确和详细。最大的区别是该--tmpfs标志不支持任何可配置选项。

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

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

    • 安装type座的 ,可以是 bindvolume、 或 tmpfs。这个话题讨论tmpfs,所以类型总是 tmpfs
    • 它的值是容器中装载的destination路径。tmpfs可以指定为destinationdst、 或target
    • tmpfs-size选项tmpfs-mode。请参阅 tmpfs 选项

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

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

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

在容器中使用 tmpfs 挂载

tmpfs在容器中使用挂载,请使用该--tmpfs标志,或将该 --mount标志与type=tmpfsdestination选项一起使用。没有 source坐骑tmpfs。以下示例在 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通过查看Mounts输出部分来验证安装是否为安装docker inspect

$ docker inspect tmptest --format '{{ json .Mounts }}'
[{"Type":"tmpfs","Source":"","Destination":"/app","Mode":"","RW":true,"Propagation":""}]

停止并移除容器:

$ docker stop tmptest
$ docker rm tmptest

指定 tmpfs 选项

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

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

以下示例将 设为tmpfs-mode1770以便它在容器内不可读。

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

下一步