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

Docker 卷到底是个啥东西?从使用到深入!

发布时间:2021-06-06 14:41:26 所属栏目:云计算 来源:互联网
导读:Docker 支持持久化和非持久化两种方式的存储。 非持久化化存储自动创建,从属于容器,生命周期与容器相同,即删除容器也会删除全部非持久化数据。 如果想把容器中的数据保留下来,也就是持久化,那么需要将数据存储到卷上。卷与容器是解耦的,从而可以独立地
Docker 支持持久化和非持久化两种方式的存储。
非持久化化存储自动创建,从属于容器,生命周期与容器相同,即删除容器也会删除全部非持久化数据。
如果想把容器中的数据保留下来,也就是持久化,那么需要将数据存储到卷上。卷与容器是解耦的,从而可以独立地创建并管理卷,并且卷也不与任意容器声明周期绑定,即用户删除一个关联了卷的容器,但是卷并不会被删除。
非持久化存储
每个容器都会被自动分配本地存储。默认情况下,容器全部文件和目录都是用该存储的。非持久存储属于容器的一部分,并且与容器的生命周期一样---容器创建时会创建非持久化存储,同时该存储也会随着容器的删除而删除。
在 Linux 系统中,该存储目录在 /var/lib/docker/ 下,是容器的一部分。这个 storage-driver 是指要使用的存储驱动。假如要想在生产环境中使用 Linux 运行 Docker,需要确认当前的存储驱动是否符合当前 Linux 版本:
RedHat Enterprise Linux:Docker 17.06 或者更高的版本中使用 Overlay2 驱动。
Ubuntu:使用 Overlay2 或者 AUFS 驱动。如果正在使用 Linux 4.x 或者更高版本的内核,建议使用 Overlay2。
总的来说,Overlay2 驱动正在逐渐流行,可能在未来会成为大多数平台上的推荐存储驱动。
持久化
容器中持久化数据的方式推荐使用卷,也就是先创建卷,接着将卷挂载到容器上。这个时候,卷会挂载到容器文件系统的某个目录中,任何写到该目录下的内容都会写到卷中。即使容器被删除了,卷及其上面的数据也仍然存在。
如下图所示,Docker 卷就被挂载到了容器的 /code 目录,那么任何写入 /code 目录中的数据其实都是写入到 Docker 卷中,并且这个 Docker 卷在容器删除之后依然存在。而其他目录使用的都是临时的本地存储。
 
卷本质就是 Docker 主机上的一个目录。将 Docker 主机中的一个目录挂载到了容器文件系统中的一个目录后,此时操作容器文件系统中的目录,其实就是操作相应的 Dokcer 主机上的目录。也就是相当于容器不再仅仅只能访问容器的文件系统了,还可以访问所在 Docker 主机所在的文件系统了。”见识一下
创建和查看卷
docker volumn create myvol  # 创建名为 myvol 的卷 
默认情况下,Docker 创建新卷时采用内置的 local 驱动,采用这个驱动也就说明创建的卷只能被容器所在的 Docker 主机所使用(上述所使用的就是 local 驱动)。
除了 local 驱动之外,你还可以使用 -d 参数指定不同的驱动。第三方驱动也可以通过插件方式接入,这些驱动提供了高级存储特性,并为 Docker 集成了外部存储系统。卷插件涵盖了块存储、文件存储、对象存储等。
块存储:相对性能更高,适用于对小块数据的随机访问负载。比如 Amazon EBS 或者 OpenStack 块存储服务。
文件存储:包括 NFS 和 SMB 协议的系统,在高性能场景下表现优异。比如 NetApp FAS、Azure 文件存储。
对象存储:适用于较大且长期存储的、很少变更的二进制数据存储。通常对象存储是根据内容寻址,并且性能较低。比如 Amazon S3。
docker volumn ls 
 
docker volumn inspect [VOLUMN_NAME] 
inspect 命令会输出相应卷的详细信息,Driver 和 Scope 都是 local,那么表示这个卷使用默认 local 驱动创建,只能用于当前 Docker 主机上的容器。Mountpoint 表示卷位于 Docker 主机上的位置,使用 local 驱动创建的卷在 Docker 主机上均有专属目录。

(编辑:衡水站长网)

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

    热点阅读