Docker的完全解耦与半解耦状态

要了解完全解耦状态与半解耦状态,我们首先需要了解两个概念,什么是解耦以及软件的启动过程,就是说启动一个软件,我们的计算机在我们看不到的地方,做了哪些操作。
在百度百科中,对于解耦一词给出的概念为:
耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。 解耦就是用数学方法将两种运动分离开来处理问题,常用解耦方法就是忽略或简化对所研究问题影响较小的一种运动,只分析主要的运动。
软件的启动过程简单来说:user(用户)-- shell(终端)-- OS(操作系统)-- lib(lib仓库)-- soft(软件)-- device(硬件)。
就是说,我么要启动一个软件,首先我们登录的用户在shell终端中输入启动该软件的启动命令,终端将这个命令发送给os操作系统,操作系统识别后,通知lib库准备软件运行所需要的仓库文件,也就是运行所需要的环境,lib仓库准备好环境之后,通知soft软件,运行环境已经准备就绪了以后,soft再将指令发送给device进行执行,这样,一个软件就被我们启动了起来。
在上述的流程中,我们可以发现,软件的启动,是需要依赖OS操作系统,lib库以及device硬件设备的。而完全解耦状态,与半解耦状态,解除耦合的部分,就是这三个部分。

我们结合图片来理解完全解耦和半解耦状态

完全解耦状态

完全解耦状态(以虚拟化为例)

对于完全解耦最好的诠释就是虚拟化。例如我们使用的虚拟机软件,virtual box还有VMware等。我们在同一台电脑上,想要同时运行两个相同的软件时,总是会出现端口冲突等问题。那么这个时候解除耦合,就是为了给他提供一个独立的运行环境。
虚拟化在hypervisor层实现硬件的物理划分,在划分的每一个空间内都安装一个操作系统,然后在这些操作系统上运行想要运行的软件,这样就可以在同一台计算机上运行的多个系统内运行多个相同的软件。
那么这个时候,os操作系统,lib库,以及device硬件设备,都在hypervisor层就被隔离了开来,就不会出现冲突的状态。

半解耦状态

半解耦状态

半解耦状态,也就是docker所运行的状态。
使得在同一个环境下可以同时运行两个相同的软件,分担软件服务器的压力。
直接使用物理机上的硬件资源(CPU、MEM、DISK)和kernel(内核),lib(库)。
使用的lib库等文件若和物理机完全相同,会使用软连接的方式进行使用。只有使用不同的lib文件才去下载。

docker会建立一个container层,以文件夹的形式存在于系统中。所有的app运行在container层中。而container层中运行此软件时,所需要的硬件,操作系统以及lib库都通过软链接的方式链接到container层中。而如果有不同的内核或者lib库要求时才会去下载。

那么完全解耦和解耦状态的区别是什么呢?

完全解耦状态,是在硬件层直接进行划分,每个app所运行的系统,以及所需要的lib库文件等,都是单独存在于一个空间内的。
而半解耦状态,是在hostos上开启了一个docker守护进程,通过这个守护进程开启了container,而app运行在container中,且运行所需的lib库,内核等文件,若与hostos相同则直接使用hostos的。若不相同才需要下载。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值