Docker 架构

用户头像
混沌畅想
关注
发布于: 2020 年 10 月 23 日

虚拟化是一个广义的术语,是指计算元件在虚拟的基础上而不是真实的基础上运行,是一种为了实现优化资源的资源管理解决方案。在IT领域,实现这种把有限的、固定的资源根据不同需求进行重新规划从而达到最大利用率的技术统称为虚拟化技术。虚拟化技术有很多种类,比如软件虚拟化、硬件虚拟化、内存虚拟化、桌面虚拟化、服务虚拟化、虚拟机等等。

容器是一种轻量化的虚拟化技术,而Docker的基础是Linux容器技术,在LXC的基础上Docker作了进一步的封装,让用户无需关心容器的管理。毫无疑问,近年Docker已经成为容器技术的代名词。但容器不等同于Docker,容器更不是虚拟机。下图1比较了Docker和传统虚拟机的不同,容器是在操作系统层面上实现虚拟化,直接复用了本地宿主机的操作系统;而传统虚拟机则是在硬件层面实现,虚拟机需要运行一个完整的操作系统,通过管理程序虚拟访问主机的资源。通常虚拟机为环境提供的资源比绝大多数应用程序需要的资源更多。

图1-容器虚拟机对比

容器(CONTAINER)是对应用层进行的抽象,把应用和底层的Infrastructure(基础设施)隔离开来,并将应用程序和环境依赖整体打包,多个容器可以在同一台宿主机上运行,并可与其它容器共享操作系统的内核,每个容器在用户空间中作为独立的进程单独运行。容器占用的空间与虚拟机相比少很多,并且由于Docker是不携带操作系统的,Docker的应用非常轻巧,因而在相同资源配置情况下可以开启更多的应用程序。

虚拟机(VM)是物理硬件的抽象,将一台服务器转变为多台服务器。虚拟机的管理程序能够实现在一台计算机上运行多台虚拟机,但每个虚拟机都包含完整的操作系统、应用程序以及环境依赖。原本很小的应用程序由于携带了操作系统而变得非常的庞大和笨重。

容器和虚拟机也并非是对立的,目前更为流行的做法是将虚拟化和容器结合起来,众多的使用场景都是将物理机进行虚拟化,先虚拟化出多个虚拟机,然后在虚拟机内部使用容器。

Docker是实现轻量级操作系统虚拟化解决方案的开源项目。Docker使用的是客户端/服务器体系结构,Docker客户端与Docker服务器进行交互时,由Docker服务端负责构建、运行和分发Docker镜像。

图2-架构图

从图2所展示的Docker架构图中可以看到,Docker客户端向Docker服务器发送Docker命令,并由Docker daemon进程负责处理Docker客户端以RESTFul形式调用的API命令,最后由daemon进程执行镜像的编译、容器的启动/停止以及分发,一个Docker客户端可以与多个Docker daemon进程通信。



发布于: 2020 年 10 月 23 日 阅读数: 20
用户头像

混沌畅想

关注

还未添加个人签名 2017.10.22 加入

还未添加个人简介

评论

发布
暂无评论
Docker架构