本文详细介绍了Docker容器的生命周期架构以及Docker容器与VM的区别,具有非常好的实用价值,希望对大家有所帮助。跟我回去看看。
容器的生命周期
运营中容器的生命周期
容器是具有保护特性的进程的组合。当应用dockerrun时,将选择一个镜像系统来呈现一个单独的系统文件,并指定相关的 *** 作过程。这里的具体 *** 作过程称为初始过程。当这个初始进程启动时,容器也会启动,当初始进程退出时,容器也会退出。
所以可以感觉到容器的生命周期和初始过程是一致的。自然,由于容器中不仅有这样一个初始进程,初始进程本身也可以引起其他子进程或者dockerexec引起的运维管理的实际 *** 作,这也属于初始进程管理的范畴。当初始进程退出时,所有子进程也将退出,从而更好地避免资源的泄漏。
然而,那样会有一些问题。通常是先用里面的程序流,很可能会造成一些关键数据。当容器被撤销和删除时,数据会丢失,这是用户无法接受的,所以容器引起的关键数据必须持久化。容器可以立即将数据保存到特定的文件目录中,该目录称为数据卷。
数据具有一些特性,其中突出的一点是数据卷的生命周期独立于容器的生命周期。换句话说,容器的建立、运行、终止、删除等实际 *** 作与数据量无关,因为它是一个唯一的文件目录,用来帮助容器持久化。简单来说,你将数据卷初始化到容器中,这样容器就可以将数据加载到相对的文件目录中,容器的撤销不会造成数据丢失。
通常,有两种主要的数据卷管理方法:
第一种方法是根据bind方法立即将主机的文件目录初始化到容器中;这种方法很简单,但是会招致运维管理的成本。因为它依赖于主机的文件目录,所以必须对所有主机进行统一管理。
二是把文件目录管理交给运营模块。
容器新项目体系结构
moby容器模块架构
莫比是现阶段最流行的集装箱管理模块。mobydaemon将向您展示容器、镜像系统、互联网及其卷的管理。mobydaemon所依赖的最重要的组件是containerd,它是一个容器运行时管理模块。它独立于moby守护进程,可以显示容器和管理镜像系统。
在containerd的底部,有一个containerdshim控制模块,它类似于一个guard进程。设计方案有几个原因:
首先,containerd必须管理容器的生命周期,而容器可能是由不同的容器创建的,因此需要表现出一种灵活的软件管理。Shim是在不同容器运行时开发设计的,可以摆脱容器化,由软件管理。
其次,由于shim软件的完成,可以通过containerd动态对接。如果你没有那种工作能力,当mobydaemon或者containerddaemon不小心退出的时候,容器就会无人问津,然后就会褪色退出,危及应用的运行。
最终,moby或者containerd很可能会随时随地升级。如果不提供shim系统,就无法保证升级不会原地发生,也不会危及业务流程的升级。所以containerdshim非常关键,它完成了动态对接的工作能力。
以上只是对摩拜的大致详细介绍。
容器与虚拟机
容器和虚拟机之间的差异
vmHypervisor的虚拟化技术是用来模拟CPU、运行内存等硬件平台,从而在主机上创建一个GuestOS,也就是常说的安装vm虚拟机。
每个来宾 *** 作系统都有一个独立的核心,如Ubuntu、CentOS甚至Windows。在那个GuestOS下,每个应用都是独立的、分布式的,VM可以表现出更强的保护效果。然而,这种保护的实际效果必须付出一定的代价。由于一部分云计算服务器必须交给虚拟化技术,很难灵活使用目前的云计算服务器,每个来宾OS必须占用大量的存储空空间。比如安装Windows电脑 *** 作系统必须有10~30G的存储空空间,Ubuntu也必须有5~8G。此外,这种方法的启动很慢。正是因为vm虚拟机的技术缺陷,才诞生了容器技术。
容器是用于流程的,因此不需要客户 *** 作系统,只有一个系统文件必须显示其必要的文档组合。的所有文档保护都在进程级,所以启动时间比VM快,所需存储空比VM低。当然,进程级的保护并没有想象中的那么好,保护的实际效果也比VM差很多。
总体:
与VM相比,容器有好有坏,所以容器技术也在向强保护方向发展。
以上对Docker容器生命周期架构及其与VM的区别的详细描述,是我与大家分享的全部内容。期待给你一个参考,也期待你的申请。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)