Docker从入门到放弃-虚拟机技术与Docker技术

首先在了解Docker之前我们要明确一个概念就是就是在Docker之前出现的虚拟机技术,在虚拟机中安装上Linux系统之后,就可以安装各种的服务器程序、DB等等,并且将已经开发好的应用程序运行到虚拟机中,然后将搭建好的虚拟机镜像复制运行到各种的服务器中,就可以实现快速部署快速扩展等操作。而Docker技术与虚拟机技术类似。

虚拟机技术

根据上面的描述,我们可以知道虚拟机技术其实在实现快速部署方面是非常方便的,但是虚拟机技术对底层依赖的硬件要求非常高,现在我们遇到的很多的CPU都增加了关于虚拟化功能的支撑,但是与真实的物理机相比,还是有很大的性能差距。

为了进一步的改善这种性能差距,出现了Xen半虚拟化技术。如下图所示。

我们知道虚拟机本身也是一台完整的机器,所以必须要安装OS。而在镜像中安装了OS,镜像的体积就会越变越大。如下图所示

由于虚拟机镜像越来越大,收发虚拟机镜像就会是一个非常耗时的操作,尤其是在对一些开源的虚拟化软件行操作的时候,其重点就是对OS的虚拟化,如果OS只用来提供镜像的运行功能,那么在部署和管理上有很多的功能是无法正常支撑的,就会出现一些技术短板,从而影响到整个系统。

而Docker的出现打破了这些限制。

Docker

与半虚拟化技术相比,Docker是一种更加轻量化的实现方式。如下图所示,整个的应用体系都在往轻量化的方向发展,使用Docker技术不需要再安装客户OS,Docker镜像中只是隔离并且安装了服务器运行的所需要的执行文件和支持相关内容的应用库,从这个角度来看,整个的应用程序在Docker的体积有了明显的减小。

Docker技术没有硬件层面上的虚拟化,所以相比较与虚拟机实现,无论是在内存访问、文件系统、网络速度等方面都比虚拟机要快的多。如下图所示的一些性能测试。

与虚拟机不同的是Docker为使用者提供了专门创建并且部署镜像的功能,还提供了例如Git管理源码一样的Docker镜像版本管理工具。除此之外,为了对镜像进行一个集中式的管理,Docker还提供了镜像上传和下载的功能。利用Docker Hub提供的功能帮助用户更好的管理Docker镜像。并且在Docker中还提供了各种的API,方便用户可以更好的实现自动化的开发,从而更好的支持了开发运维等工作。

Linux容器

在Linux/Unix系统中一直都有一个chroot命令,这个命令用于更改文件系统的根目录,使用chroot命令将指定的目录设置为根目录之后,可以创建chroot jail 环境,这个环境有点类似于沙盒模式,在这个环境中不能访问外部的文件或者是目录。由于chroot命令可以隔离目录路径,所以使用这种方式可以极大程度上防止服务器地址信息泄露或者是文件受损等问题的发生。如下所示。

在使用chroot命令的时候,必须要准备放入chroot jail的可执行文件和共享库,这种设置方式比较复杂,此外就是,这种方式并不是完美的虚拟机环境,所以在使用的时候存在各种约束,所以在后来Linux中提供一个LXC(LinuX Container)的系统级虚拟化技术。

LXC技术并不是将整个的电脑虚拟化成一个OS来使用,而是在Linux内核级别提供了一种虚拟隔离空间。这个隔离的虚拟空间是没有安装OS的,所以并不能称为是虚拟机,所以将其称之为容器。

Linux的内核的Control Group 分配CPU、内存、磁盘、网络资源、提供了完全的虚拟化空间,除此之外,还要隔离进程数、用户账户、文件系统、IPC等等,创建与主机不同的空间,将其称之为Namespace isolation。而LXC就是利用这两种技术结合提供的虚拟空间。如下图所示

在开发之初Docker是基于LCX实现的,但是从0.9版本开始,就出现了新的替代品libcontainer。称为是运行时驱动(exec driver)。如下图所示。

展开阅读全文

页面更新:2024-04-09

标签:虚拟机   技术   根目录   文件系统   入门   命令   快速   方式   功能   环境   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top