您的位置:首页 > 运维架构 > Docker

Docker 管理应用数据 - 使用 tmpfs 挂载数据

2018-03-09 20:22 831 查看
原文地址

默认情况下,卷和绑定挂载将挂载到容器的文件系统中,并将其内容存储在主机上。

有时候你不想把容器的数据存储在主机上,但出于性能或安全原因,或者如果数据是不需要持久化的状态信息,你也不希望将数据写入容器的可写层。例如容器的应用程序根据需要创建和使用的一次性临时密码。

为了让容器能够访问数据而不需要永久地写入数据,可以使用
tmpfs
挂载,该挂载仅存储在主机的内存中(如果内存不足,则为 swap)。当容器停止时,
tmpfs
挂载会被移除。如果提交容器,则不会保存
tmpfs
挂载。



1. 选择
--tmpfs
--mount
标志

最初,
--tmpfs
标志用于独立容器,而
--mount
标志用于 swarm 服务。但是,从 Docker 17.06 开始,也可以在独立容器上使用
--mount
。一般来说,
--mount
更明确和详细。最大的不同在于
--tmpfs
语法将所有选项组合在一个字段中,而
--mount
语法将它们分开。下面是每个标志的语法比较。

知识点:初学者应该使用
--mount
语法。有经验的用户会更熟悉
--tmpfs
语法,但是仍然建议使用
--mount
语法,因为调查显示它更加易用。

--tmpfs
: Mounts a tmpfs mount without allowing you to specify any configurable options, and can only be used with standalone containers.

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

要挂载的类型
type
,可以是 bind、volume 或 tmpfs。本主题主要使用 tmpfs。

要挂载的目的地
destination
,将文件或目录挂载在容器中的路径作为其值。 可能被指定为 destination、dst 或 target。

tmpfs-type
tmpfs-mode
选项。

下面的例子在可能的地方展示了
--mount
--tmpfs
语法。

1.1
--tmpfs
--mount
之间的表现差异

--tmpfs
标志不支持任何配置选项。

--tmpfs
标志不能用于 swarm 服务。必须使用
--mount


2. tmpfs 容器的限制

tmpfs
挂载不能在容器之间共享。

tmpfs
挂载只能用于 Linux 容器,不支持 Windows 容器。

3. 在容器中使用
tmpfs
挂载

要在容器中使用
tmpfs
挂载,使用
tmpfs
标志,或使用在容器中使用
--mount
标志同时指定
type=tmpfs
destination
选项。下面的例子在 Nginx 容器中的
/app
创建了一个
tmpfs
挂载。第一个例子使用
--mount
标志,第二个使用
--tmpfs
标志。

--mount


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


--tmpfs


$ docker run -d \
-it \
--name tmptest \
--tmpfs /app \
nginx:latest


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

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


删除容器:

$ docker container stop tmptest

$ Docker container rm tmptest


3.1 指定
tmpfs
选项

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

选项描述
tmpfs-size
tmpfs 挂载的大小,单位字节。默认无限制
tmpfs-mode
tmpfs 的八进制文件模式。例如,700或0770。默认为 1777 或所有人都可写。
下面的示例将
tmpfs-mode
设为 1770,这样容器中就不是所有人都可写的。

docker run -d \
-it \
--name tmptest \
--mount type=tmpfs,destination=/app,tmpfs-mode=1770 \
nginx:latest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: