前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「走进k8s」Docke数据共享和持久化(五)

「走进k8s」Docke数据共享和持久化(五)

作者头像
IT架构圈
发布2019-08-01 15:16:05
8120
发布2019-08-01 15:16:05
举报
文章被收录于专栏:IT架构圈

上次说了如何使用dockerhub和如何搭建私有仓库,上次给大家留了个悬念,就是关于-v,如果容器删除了如何保存数据,就是通过挂载主机目录和数据卷的概念。

(一)数据卷

看下redis对应的Dockerfile,里面有个VOLUME,VOLUME就是数据存储的标识。数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS(UNIX文件系统的)

  • ①运行redis容器
代码语言:javascript
复制
docker run --name some-redis -d -p 6379:6379 redis
docker volume ls

docker volume ls 发现有很多个,不知道那个是具体刚创建的关联的数据卷

  • ②查看redis容器描述,找到对应的volume的ID
代码语言:javascript
复制
docker inspect some-redis

这个是数据卷,跟刚才的docker volume中的第二个是一样的ID

查看volume单独的描述

代码语言:javascript
复制
docker volume inspect ID
  • ③再次运行redis容器
代码语言:javascript
复制
docker run --name some-redis -d -p 6380:6379 redis

发现增加了一个volume。每次创建都有增加一个volume

  • ④删除一个容器,看看volume会不会变化

结论不会发生任何的变化,原来4条还是4条。

  • ⑤删除数据卷
代码语言:javascript
复制
docker volume rm <volumeID>
  • ⑥ 数据卷的名字是ID真的不太友好,换个方式

创建了一个volume的名称

代码语言:javascript
复制
docker volume create redis_volume
docker run --name some-redis3 -d -p 6380:6379 -v redis_volume:/usr/local/etc/redis/redis.conf redis
docker volume inspect redis_volume
  • ⑦ 数据卷的概念

1.数据卷 可以在容器之间共享和重用。2.对 数据卷 的修改会立马生效。3.对 数据卷 的更新,不会影响镜像。4.数据卷 默认会一直存在,即使容器被删除。保护数据不被删除。

(二)主机目录

主机上的目录可以是一个本地目录,也可以在一个 NFS share 内,或者在一个已经格式化好了的块设备上。其实这种形式和第一种没有本质的区别,容器内对 /usr/local/etc/redis/redis.conf 的操作都会反映到主机上的 /root 目录内。只是,重新启动容器时,可以再次使用同样的方式来将 /root 目录挂载到新的容器内,这样就可以实现数据持久化的目标。

  • ①演示主机目录
代码语言:javascript
复制
docker run --name some-redis4 -d -p 6381:6379 -v $(pwd):/usr/local/etc/redis/redis.conf redis
docker inspect some-redis4

$(pwd) 指的是当前目录(也还就是/root),也可以指定特定目录。一般来说常用的软件例如redis,mysql,nginx 里面的配置文件都在外边挂载的,但是redis,mysql可能特殊一点,经常把数据文件也挂载在指定的主机目录,我的mac电脑内存太低了。容器启动后影响电脑的速度,不用就删除,用的时候启动,反正数据都在主机的目录下。

(三)Flocker:容器的分布式存储平台

原生的 Docker volume 不具备可移植性。于是,出现了Docker 的分布式卷解决方案 Flocker。这次不做详解,以后k8s的时候会重点说的。

  • 好处 1.容器的数据会被写入 Flocker 后端存储而不是主机上,因此,在主机出现故障时可以保证数据不丢失。2.在容器迁移时,Flocker 会自动地将卷从一个 host 移植到另一个 host。

Flocker 的结构:

PS:数据卷在容器管理平台使用非常频繁,如果是本机安装一个软件的话,建议使用主机目录,因为自己来管理,目录还是比较方便的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一)数据卷
  • (二)主机目录
  • (三)Flocker:容器的分布式存储平台
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档