docker平台架构图解

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的工作原理
docker是一个Client-Server结构的系统,docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器,是一个运行时环境,就是我们前面说到的集装箱。可以比mysql进行学习。
docker工作原理

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来实现具体对容器进行的操作。

1.dockerDaemon
2.dockerClient与dockerDaemon通信3.job工作形式
4.GraphDriver镜像管理驱动5.Network通信管理驱动
6.execDriver执行驱动7.libcontainer
运行容器/rootfs根的文件系统/k8s会用到

run干了什么

启动Docker后容器的运行过程。
启动docker后容器的运行过程

为什么Docker会比VM虚拟机快

(1)docker有着比虚拟机更少的抽象层。
由于docker不需要hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此CPU、内存利用率上docker将会在效率上有明显优势。
(2)docker利用的是宿主机的内核,而不需要加载操作系统OS内核。
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值