Docker 数据挂载模式¶
Docker 提供了三种方式将数据从宿主机挂载到 Docker 容器中:volumes、bind mounts、tmpfs。
Volumes 是在宿主机文件系统的一个路径,默认情况下统一的父路径是 /var/lib/docker/volumes/
,非 Docker 进程不能修改这个路径下面的文件,所以说 Volumes 是容器数据持久存储数据最安全的一种方式。
Bind mounts 可以将文件存储在**宿主机文件系统的任何路径**,所以非 Docker 进程也可以对其进行修改,存在潜在的安全风险。
Tmpfs 只存储在宿主机的内存中,不会写入到宿主机文件系统中,不会持久化存储。
一. Tmpfs¶
Tmpfs
挂载是临时的,只存留在容器宿主机的内存中,当容器停止时,Tmpfs
挂载文件路径将被删除,写入的文件不会被持久化。
PS:SpringBoot 项目启动之后会在 /tmp 目录下面解压出 tomcat 容器,提供 web 服务,所以将 /tmp 目录使用 tmpfs 方式挂载到宿主机的内存中,也会提升 SpringBoot 项目的运行效率
二. Bind mounts¶
Bind Mounts 挂载数据卷的方式也是最常见的一种方式,比如使用 -v
参数绑定数据卷,例如:其中 /root/nginx/html
是我们任意指定的一个宿主机磁盘文件目录,这种情况就是 Bind Mounts 方式挂载数据卷
除了使用 -v
参数绑定的方式,还可以使用 --mount
参数绑定的方式实现 Bind mounts 数据卷挂载。
--mount
以键值对的方式传参,比 -v
提供了更多的选项
type=bind
表示以 Bind Mounts 方式挂载数据卷source=/root/nginx/html
表示宿主机的文件路径target=/usr/share/nginx/html
表示容器的文件路径,宿主机 source 文件路径挂载到容器的 target 路径readonly
配置参数,表示文件路径采用只读的方式挂载