- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
轻量级虚拟化Docker容器原理
Linux上的虚拟化技术主要包括两类:一类是管理技术,如KVM;另一类是容器技术,如Linux提供的LXC(LinuxContainer,Linux容器)。Docker是构建在LXC之上的虚拟机解决方案。
Hyper-V、KVM和Xen等虚拟机管理程序都是基于虚拟化硬件仿真机制,对系统的要求很高。然而,容器使用共享的操作系统,在系统资源方面容器比虚拟机管理程序更高效。Docker建立在LXC的基础上,有自己的文件系统、存储系统、处理器和内存等部件。容器与虚拟机的区别主要在于,虚拟机管理程序对整个设备进行抽象处理,具有良好的兼容性,而容器只对操作系统内核进行抽象处理,降低了系统性能的开销。从隔离的有效性角度来看,Docker不如虚拟机管理程序彻底。
Docker的管理主要包括镜像、容器和仓库3部分。
镜像是动态容器的静态表示,包括容器所要运行的应用代码和运行时的配置,与主机共享操作系统资源。Docker镜像包括一个或者多个只读层,因此,镜像一旦被创建就不能被修改了。一个运行着的Docker容器是一个镜像的实例。在同一个镜像中运行的容器包含相同的应用代码和运行时依赖。但是与静态的镜像不同,每个运行着的容器都有一个可写层,这个可写层位于若干只读层上。
运行时的所有变化,包括对数据和文件的写和更新操作,都会被保存在可写层中。因此,在同一个镜像中运行的多个容器包含不同的容器层。一个Docker镜像可以构建于另一个Docker镜像之上,这种层叠关系可以是多层的。
Docker镜像通过镜像ID进行识别。镜像ID是一个有64位字符的十六进制字符串。但是,当运行镜像时,通常不会使用镜像ID来引用镜像,而使用镜像名。
(2)容器是一个开源的应用容器引擎,让开发者打包应用以及依赖包到一个可移植的容器中,然后发布到Linux系统中,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口,几乎没有性能开销,可以很容易地在计算机和数据中心中运行。
如果把镜像比作类,容器就是实例化后的对象。
当启动一个容器时,首先Docker会检查本地是否存在该镜像,如果在本地没有找到该镜像,则Docker会去官方的DockerHubRegistry查看DockerHub中是否有该镜像。一旦找到该镜像,就会下载该镜像并将其保存到本地的宿主机中。然后,Docker在文件系统内部用这个镜像创建一个新的容器。该容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。最后,用户“告诉”Docker在新创建的容器中运行什么命令。当容器创建完毕之后,Docker就会执行容器中的指定命令,并且有声音提示。
退出容器请使用“exit”命令。
(3)仓库是集中存放镜像的地方,一个注册服务器上有很多仓库,一个仓库中有多个镜像。简单来说,仓库就是一个存放和共享镜像文件的地方。Docker不仅提供了一个中央仓库,同时也允许使用Registry搭建私有仓库。使用私有仓库有很多优点:节省网络带宽,每个镜像不用每个人都去中央仓库下载,只需要从私有仓库中下载即可。
文档评论(0)