加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Docker 数据持久化的三种方案,你总能用到

发布时间:2019-09-05 18:32:49 所属栏目:编程 来源:Arking
导读:容器中的数据可以存储在容器层。但是将数据存放在容器层存在以下问题: 数据不是持久化。意思是如果容器删除了,这些数据也就没了 主机上的其它进程不方便访问这些数据 对这些数据的I/O会经过存储驱动,然后到达主机,引入了一层间接层,因此性能会有所下

要特别小心的使用这两个选项。”Bind-mounting a system directory such as /home or /usr with the Z option renders your host machine inoperable and you may need to relabel the host machine files by hand”

tmpfs mount

只在linux中支持

相对于volumes和bind mount,tmpfs mount是临时的,只在主机内存中持久化。当容器停止,tmpfs mount会被移除。对于临时存放敏感文件很有用

不同于volumes和bind mount,多个容器无法共享tmpfs mount

使用

  • 挂载到容器:—tmpfs。如果是Docker17.06或更高:推荐使用—mount
  1. 挂载类型:key为type,value为bind、volume或tmpfs
  2. 容器中的挂载点:key为destination、dst或target,value为容器中的路径
  3. tmpfs-size和tmpfs-mode选项
  4. —tmpfs:直接指定容器中的挂载点。不允许指定任何配置选项
  5. —mount:由多个’,’隔开的键值对

=组成:

Docker 数据持久化的三种方案,你总能用到

场景

  • 最好的使用场景是你既不想将数据存于主机,又不想存于容器中时。这可以是出于安全的考虑,或当应用需要写大量非持久性的状态数据时为了保护容器的性能

volume drivers

机器间共享数据

当构建错误容忍应用时,可能需要配置同一个服务的多个副本来访问相同的文件:

Docker 数据持久化的三种方案,你总能用到

有多种方法来实现这个目的:

  • 为应用添加逻辑,将文件存储到一个云对象存储系统(如Amazon S3)中
  • 使用一个支持将文件写入外部存储系统(如NFS或Amazon S3)的driver来创建卷

volume drivers可以将底层存储系统从应用逻辑中抽象出来。比如,如果你的服务使用一个具有NFS driver的卷,你能更新你的服务使用不同的driver,作为在云中存储数据的示例,而不更改应用程序逻辑

使用

在使用docker volume create或驱动容器创建匿名卷时,可以指定一个volume drivers。下面的例子使用vieux/sshfs作为volume drivers

假设有2个节点,第一个节点是Docker主机,它能SSH到第二个节点

1、在Docker主机中,安装vieux/sshfs插件

  1. docker plugin install --grant-all-permissions vieux/sshfs 

2、使用卷驱动创建卷

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读