Docker持久化存储方案

本文介绍了Docker的三种数据持久化方案:Bind mounts、Volumes和Tmpfs。Bind mounts允许将Host路径挂载到容器,但存在安全风险。Volumes由Docker管理,更安全,适合多容器共享。Tmpfs则将数据存储在内存中,不持久化。文章详细阐述了每种方式的使用场景、优缺点及实践操作。
摘要由CSDN通过智能技术生成

目录

一、Docker数据存储简介

二、Bind mounts

三、Volume

四、Tmpfs


一、Docker数据存储简介

我们知道Docker的数据可以存在容器的可写层。但是当容器当容器不再运行时,数据不能持久存储,我们无法从容器外部获得这些数据;并且,Docker的可写层与宿主机(Host)在容器运行时紧密耦合,我们不能轻易地把数据移动到别的地方。

Docker提供了三种方式,把数据从Host挂载到Docker容器中,并实现持久化存储。这三种方式分别是Bind mounts, Volumes,Tmpfs.

  • Bind mounts:可以实现将Host中的任意路径挂载到容器中,可以存储在任意位置,非Docker的进程或者容器可能随时对其进行修改,存在一定的风险。
  • Volumes:实现将Docker中的某一个volume挂载到容器中,存储在Docker Host文件系统的某一个路径下,默认是/var/lib/docker/volumes,由Docker进行管理,非Docker的进程不能修改该路径下的文件,比较安全。
  • Tmpfs:存储在Host系统的内存中,没有在磁盘上进行存储,不能实现持久化。

二、Bind mounts

1.简介

Bind mounts可以将Host上的任意路径进行挂载,包括重要的文件系统路径,因此就存在一个缺点,我们可以通过容器更改Host的文件系统,进行文件的增删改等操作,若我们将文件系统的路径进行挂载时,这会严重影响到系统的安全性,包括那些非Docker进程。

2.如何使用

在单容器情况下,使用Bind mount可以用 -v 或者 --volume,在swarm集群中,我们使用 --mount,在Docker17.06之后,可以统一使用 --mount,这也是非常推荐使用的。

-v 或者 --volume语法

它有三部分组成,使用 :进行分割,这些字段必须以正确的顺序排列,并且每个字段的含义不明显。

  • 第一个字段是 Docker Host 上的一个文件或者目录。
  • 第二个字段是将要挂载到容器上的一个文件或者目录。
  • 第三个字段是可选的,用来增加一些附加选项,比如 ro,consistent,delegated,cached,z,and Z。

--mount语法 

它由一组键值对组成,由,进行分割

Key Value
type bind、volume、tmpfs,如不指定,默认是 volume
source或者src Docker Host 上的一个文件或者目录
destination或者dst或者target 被挂载容器上的一个文件或者目录
readonly 默认可读可写,加上readonly表示是只读的文件系统
bind-propagation rprivate、private、rshared、shared、rslave、slave

两者的区别

使用-v的时候,如果在 Docker Host 不存在要挂载的文件或者目录,Docker 将会自动进行创建,通常是一个目录。
使用--mount的时候,如果在 Docker Host 不存在要挂载的文件或者目录,Docker 不会自动创建目录&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值