首页 >> 大全

【云原生 | 20】Docker数据卷及卷的持久化问题

2023-11-06 大全 28 作者:考证青年

博主简介:

云计算领域优质创作者

2022年CSDN新星计划赛道第一名

2022年CSDN原力计划优质作者

阿里云ACE认证高级工程师

阿里云开发者社区专家博主

交流社区:CSDN云计算交流社区欢迎您的加入!

❤️❤️❤️文末重磅福利~免费赠送5本实体书籍❤️❤️❤️

目录

1.数据卷特性

2.管理卷(默认挂载)

3.自管理卷(手动挂载)实验

4.容器中的数据卷

5.卷的持久化问题

6.卷的持久化问题

❤️❤️❤️重磅福利:小鹏送书活动第一期❤️❤️❤️

1.数据卷特性

1.1 认识数据卷特性

镜像由多个只读层叠加而成,启动容器时, 会加载只读镜像层并在镜像栈顶部添加一个读写层

> 如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,次即“写时复制”机制

1.2数据卷意义

关闭并重启容器,其数据不受影响;但删除 容器,则其改变将会全部丢失

> 存在的问题

>> 存在于联合文件系统中,不易于宿主机访问

>> 容器间数据共享不便

>> 删除容器其数据会丢失

> 解决方案:“卷”

>> “卷”是容器上的一个或多个“目录”,此类目录可绕过联合文件系统,与宿主机上的某目录“绑定”

1.3数据卷结构

Bind mount

> -

可以是物理机上的任何一个目录

存储服务方式有很多种,如NFS,MFS等,容器数据共享时需要对接到的文件系统或客户端接口都是不一样的,此时需要CSI容器存储接口将存储服务和容器内部对接。存储服务器对接物理机目录,物理机目录对接容器内目录。

2.管理卷(默认挂载)

制作镜像时以关键字会指定一个目录。运行时先在镜像内找关键字,然后在物理机的/var/lib//目录下生成一个随机名称的目录,默认将此目录与容器内关键字后面指定的目录挂载起来。

3.自管理卷(手动挂载)实验

方法1:先在物理机创建一个目录,再将多个容器的目录挂载到物理机目录

[root@localhost ~]# mkdir /data	                    #创建目录
[root@localhost ~]# docker run --name test1 -v /data:/usr/local/nginx/html -d nginx:1.21.4	                                #手动挂载#-v 物理机目录:容器内目录
[root@localhost ~]# cd /data/		                #进入
[root@localhost data]# ls			                #查看无文件
[root@localhost data]# touch {1..100}	            #创建100个文件
[root@localhost data]# ls			                #查看有1-100个文件
[root@localhost data]# docker exec -it test1 /bin/bash		#进入容器
root@5fdd3cd78396:/# cd /usr/local/nginx/html/		#进入目录
root@5fdd3cd78396:/usr/local/nginx/html# ls			#查看有1-100个文件。挂载成功

此时单容器完成目录共享

运行第二个容器,将此容器的/usr/local/nginx/html也与物理机的/data目录挂载:

[root@localhost ~]# docker run --name test2 -v /data:/usr/local/nginx/html -d nginx:1.21.4	    

此时物理机的/data目录分别与test1容器和test2容器的两个目录挂载。

这三个目录都可以看到对方创建的文件及内容了。实现了容器与容器的文件共享。

且容器删除后,物理机的挂载目录下的文件还存在。

方法2:先运行容器1让它按照默认的方式将容器的目录与物理机随机产生的目录挂载到一起,再查看到物理机上随机产生的这个目录。将其他的所有容器的目录挂载到物理机物理机上随机产生的这个与容器1默认挂载了的目录上。实现多容器数据共享

[root@localhost ~]# docker run --name test1  -d nginx:1.21.4	#运行容器1,会自动默认挂载
[root@localhost ~]# docker inspect test1	                    #查看,找到如下内容就能查找到默认挂载的物理机目录了

然后用-v选项可以将其他容器的目录挂载到此目录下了

方法2或者:

[root@localhost ~]# docker run --name test1  -d nginx:1.21.4	#运行容器1,会自动默认挂载
[root@localhost ~]# docker run --name test2 --volumes-from test1 -d nginx:1.21.4
[root@localhost ~]# docker run --name test3 --volumes-from test1 -d nginx:1.21.4

用此命令启动其他容器,并将其他容器的目录自动挂载到容器1的挂载目录下

4.容器中的数据卷

4.1数据卷意义

-

>> run -it --name roc -v roc/lamp:v1.0

>> -f {{.}} roc

> Bind-mount

>> run -it --name roc -v : roc/lamp:v1.0

> Union

>> run -it --name roc ---from roc/lamp:v1.0

4.2存储驱动

存储驱动 ( ) 是 的核心组件,它是 实现分层镜像的基础

1、 ( DM ):性能和稳定性存在问题,不推荐生产环境使用(及以下的主流)

2、btrfs:社区实现了 btrfs ,稳定性和性能存在问题

3、:内核 3.18 进入主线,性能和稳定性优异,第一选择

4.3UFS文件系统-

mount -t overlay overlay -olowerdir=./low,upperdir=./upper,workdir=./work ./merged	
echo "overlay" > /etc/modules-load.d/overlay.conf
cat /proc/modules|grep overlay
reboot  
vim /etc/systemd/system/docker.service --storage-driver=overlay \

5.卷的持久化问题

容器是一个强大的概念,但是有时候并不是所有想访问的事物都能立马被封装成容器。用户可能有一个存储在大的集群上的相关数据库,想要连接它做一些测试。又或者,用户可能有一台遗留的大型服务器,而它上面现有配置好的二进制程序很难重现。

刚开始使用时,用户想要访问的大部分事物可能会是容器外部的数据和程序。我们将和读者一起从直接在宿主机上挂载文件转到更为复杂的容器模 式:数据容器和开发工具容器。我们还将展示一些实用的技巧,例如,只需要一个SSH连接便能跨网络进行远程挂载,以及通过协议与其他用户分享数据。

卷是的一个核心部分,有关外部数据引用的问题也是生态系统中另一个快速变化的领域。

6.卷的持久化问题

容器的大部分力量源自它们能够尽可能多地封装环境的文件系统的状态,这一点的确很有用处。

然而有时候用户并不想把文件放到容器里,而是想要在容器之间共享或者单独管理一些大文件。一个经典的例子便是想要容器访问一个大型的中央式数据 库,但是又希望其他的(也许更传统些的)客户端也能和新容器一样访问它。

解决方案便是卷!一种用来管理容器生命周期外的文件的机制。

我们可以使用的卷标志,在容器里访问宿主机上的A文件。如下图则是使用卷标志和和宿主机上的文件系统交互过程

如下命令展示宿主机上的/var/db/目录被挂载到了/var/data1:

$ docker run -v /var/db/tables:/var/data1 -it debian bash

-v标志(--的简写)表示为容器指定一个外部的卷。随后的参数以冒号分隔两个目录的形式给出了卷的格式,告知将外部 的/var/db/目录映射到容器里的/var/data1目录。如果外部目录和容器目录不存在均会被创建。

要注意的是,卷在里被设定为不是持久化的。如果添加了一个卷,然后在一个里对该目录做了一些更改,这些变动将不会被持久化到生成的目标镜像.

重磅福利:小鹏送书活动第一期

首先重磅介绍一下本次送书活动的主角!《 Boot趣味实战课》书籍。

特色:这是一本美貌与智慧并重,内涵与趣味同在的书。

干货:书籍主要内容涵盖了 周边的常用的技术: MVC、(Plus)、 Data JPA、 、、MySQL、Druid、Redis、、 等。还包括一些最佳实践:、、单元测试、统一异常处理、日志、监控等。还有一些核心技术点:AOP、IOC、自动配置、事务(隔离级别、传播特性)、分布式锁等。京东购买链接

京东、当当、天猫均已上架喔!购买链接:

本次活动一共赠送5本书,在下方评论区进行优质评论,评论获点赞量最高的前五名用户各送实体书《 Boot趣味实战课》一本。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了