docker平台架构图解
- docker三要素
- docker入门图解
- docker架构图解
- run干了什么
- 为什么Docker会比VM虚拟机快
docker三要素
镜像(images)——类比 :java的类
容器(container)——类比 :new出来的实例对象
仓库(repository)——类比 :maven中央仓库
-
Docker镜像(image):就是一个只读模板。镜像可以用来创建docker容器,一个镜像可以创建很多容器。
它相当于是一个root文件系统。比如官方镜像centos:7就包含了完整的一套centos:7最小系统的root文件系统。
相当于容器的“源代码”,docker镜像文件类似于java的类模板,而docker容器实例类似于java中new出来的实例对象。
-
Docker容器(container):
从面相对象角度:
docker利用容器独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是镜像创建的运行实例。就像是java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是互相隔离的、保证安全的平台。
从镜像容器角度:
可以把容器看做是一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
-
仓库(repository):是集中存放镜像文件的场所。
类似于:
maven仓库,存放各种jar包的地方;
GitHub仓库,存放各种git项目的地方;
docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。
仓库分为公开仓库(pubic)和私有仓库(private)两种形式。
最大的公开仓库是Docker Hub(https://hub.docker.com/)存放了大数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。
- 镜像文件:image文件生成的容器实例,本身也是一个文件,称为镜像文件。
- 容器实例:一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。
- 仓库:就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候在从仓库中拉下来就看可以了。
docker入门图解
docker本身是一个容器运行载体或称之为管理引擎。我们应该把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件,只有通过这个镜像文件才能生成docker容器实例(类似java中new出来的一个对象)。
docker的工作原理
docker是一个Client-Server结构的系统,docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境,就是我们前面说到的集装箱。可以比mysql进行学习。
docker架构图解
整体架构及底层通信原理简述
Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。
Docker运行的基本流程:1.用户是使用DockerClient与DockerDaemon建立通信,并发送请求给后者。
2.DockerDaemon作为docker架构中的主体部分,首先提供DockerServer的功能使其可能接受DockerClient的请求。
3.DockerEngine执行docker内部的一系列工作,每一项工作都是以一个job的形式存在。
4.job的运行过程中,当需要容器镜像时,则从DockerRegistry中下载镜像,并通过镜像管理驱动GraphDriver将下载镜像以Graph的形式存储。
5.当需要为docker创建网络环境时,通过网络管理驱动NetworkDriver创建并配置动车看人容器网络环境。
6.当需要限制docker容器运行资源或执行用户指令等操作时,则通过ExecDriver来完成。
7.Libcontainer是一项独的容器管理包,NetworkDriver以及ExecDriver都是通过Libcontainer来实现具体对容器进行的操作。
run干了什么
启动Docker后容器的运行过程。
为什么Docker会比VM虚拟机快
(1)docker有着比虚拟机更少的抽象层。
由于docker不需要hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核。
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net