博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rancher中级(一)(rancher的存储,网络)
阅读量:6907 次
发布时间:2019-06-27

本文共 1838 字,大约阅读时间需要 6 分钟。

 

容器的存储机制

参考 http://dockone.io/article/128http://dockone.io/article/129

Docker镜像是由多个文件系统(只读层)叠加而成。当我们启动一个容器的时候,Docker会加载只读镜像层并在顶部添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏。当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失。在Docker中,只读层及在顶部的读写层的组合被称为Union File System(联合文件系统)。

为了能够保存(持久化)数据以及共享容器间的数据,Docker提出了Volume的概念。简单来说,Volume就是目录或者文件,它可以绕过默认的联合文件系统,而以正常的文件或者目录的形式存在于宿主机上。   

Volume可以将容器以及容器产生的数据分离开来,当使用docker rm my_container删除容器时,不会影响相关的数据。

 

Volume可以使用以下两种方式创建:

编写dockerfile:在Dockerfile中指定VOLUME /some/dir

在容器启动时执行命令:docker run -v /some/dir命令来指定

 

无论哪种方式都是做了同样的事情。它们告诉Docker在主机上创建一个目录(默认情况下是在/var/lib/docker下),然后将其挂载到指定的路径(例子中是:/some/dir)。当删除使用该Volume的容器时,Volume本身不会受到影响,它可以一直存在下去。

 

容器数据的备份

 

在数据备份前首先需要了解数据容器的概念,常见的使用场景是使用纯数据容器来持久化数据库、配置文件或者数据文件等。官方的文档上有详细的解释。

 

当使用数据容器时,那做备份是相当容易的:

 

$ docker run --rm --volumes-from dbdata -v $(pwd):/backup debian tar cvf /backup/backup.tar /var/lib/postgresql/data

 

该示例应该会将Volume里所有的东西压缩为一个tar

 

跨主机共享卷

 

同主机共享:

 

容器也可以与其它容器共享Volume

 

docker run --name my_container -v /some/path ...

 

docker run --volumes-from my_container --name my_container2 ...

 

上面的命令将告诉Docker从第一个容器挂载相同的Volume到第二个容器,它可以在两个容器之间共享数据。

 

如果执行docker rm -v my_container命令,而上方的第二容器依然存在,那Volume不会被删除,如果不使用docker rm -v my_container2命令删除第二个容器,那它会一直存在

 

跨主机共享:

 

方法一:分布式数据卷BitTorrent的同步

 

方法二:通过NFS共享数据

 

方法三:Rancher实现共享卷和跨主机数据访问

 

具体可参考链接

Linux配置nfs服务

参考http://www.linuxidc.com/Linux/2016-04/129848.htm

在商店中添加nfs驱动服务

 

添加数据卷

 

添加一个mysql服务,将数据库数据存在数据卷中

选择上周创建的webapp应用中的mysql服务,为其添加卷,卷驱动为提前添加的rancher-nfs驱动,配置格式为“卷名:数据路径”

查看添加后结果

使用mysql图形化界面工具,建立连接,连接地址为rancher宿主机ip地址,端口为mysql容器所暴露出的端口号,通过sql文件生成表

查看宿主机内搭建nfs服务时所配置共享目录,sharedata目录下的文件,运行mysql服务所产生的数据已经被共享到此目录下

 

访问网站,并登录数据库中所存储的用户名与密码,数据访问成功

 

验证服务升级或者删除后数据是否还存在

mysql服务升级

重新连接mysql图形界面 数据表仍然存在

网络

本地网络docker0

overlay网络(CNI

ipsec网络与安全策略

   

 

转载于:https://www.cnblogs.com/gentleman-c/p/7387962.html

你可能感兴趣的文章
JS实现密码加密
查看>>
HTML+CSS-如何定义让两个div横向排列
查看>>
Matlab画柱状和折线对照图
查看>>
javascript时间戳和日期字符串相互转换
查看>>
链接详解--静态库
查看>>
从0开始学java——JUnit4 复习,其实基本思想还是那些,不过采用了新的注释格式的语法...
查看>>
GNU M4 - GNU Project - 免费软件基金会(FSF)
查看>>
jsp中将后台传递过来的json格式的list数据绑定到下拉菜单select
查看>>
Project Euler 85 :Counting rectangles 数长方形
查看>>
MYSQL查询某字段中以逗号分隔的字符串的方法
查看>>
Excel设置下拉菜单并隐藏下拉菜单来源单元格内容
查看>>
Java8初体验(二)Stream语法详解
查看>>
微服务架构——不是免费的午餐
查看>>
基于HTML5的Web SCADA工控移动应用
查看>>
VS 2015相当不错的功能:C#交互窗口
查看>>
hive复杂类型与java类型的对应
查看>>
[Ubuntu] ubuntu10.04系统维护之Wine的安装
查看>>
iOS获取UIView上某点的颜色值
查看>>
cocos2d-x 3.0 android mk文件 之 自己主动遍历*.cpp文件
查看>>
python数字图像处理(7):图像的形变与缩放
查看>>