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

原创文章,欢迎转载。转载请注明:转载自IT人故事会,谢谢!
原文链接地址:「走进k8s」Docke数据共享和持久化(五)

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

(一)数据卷

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

  • ①运行redis容器
docker run --name some-redis -d -p 6379:6379 redis 
docker volume ls

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

  • ②查看redis容器描述,找到对应的volume的ID
docker inspect some-redis

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

查看volume单独的描述

docker volume inspect ID
  • ③再次运行redis容器
docker run --name some-redis -d -p 6380:6379 redis 

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

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

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

  • ⑤删除数据卷
docker volume rm <volumeID>
  • ⑥ 数据卷的名字是ID真的不太友好,换个方式

创建了一个volume的名称

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 目录挂载到新的容器内,这样就可以实现数据持久化的目标。

  • ①演示主机目录
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:数据卷在容器管理平台使用非常频繁,如果是本机安装一个软件的话,建议使用主机目录,因为自己来管理,目录还是比较方便的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 默认情况下,容器内创建的所有文件都存储在可写容器层上。 这意味着: 当容器不再运行时,数据不会持续存在,并且如果另...
    运维开发_西瓜甜阅读 7,085评论 0 12
  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 13,906评论 1 39
  • 想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的。Docker镜像是由多个文...
    凤落溪凰落地阅读 4,481评论 0 0
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 5,787评论 0 7
  • 温柔的人,是春天划过脸颊轻柔的风,是夏夜滴滴答答打湿泥土缠绵的雨,是秋天脚底细细密密的碎叶声,是冬天踏在脚下捧在...
    晏祠阅读 1,813评论 0 0