Docker-学习总结1(一些概念)

文章目录

  • 历史
  • 容器
    • 容器和虚拟机的区别
    • 容器和虚拟机区别架构图
    • 容器与虚拟机具体比对:
  • Docker
    • Docker 三个基本概念:
    • Docker架构

历史

  • Docker公司:Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 创立
  • dotCloud :【Platform-as-a-Service, PaaS】平台即服务提供商,是Docker 公司的前生。dotCloud 平台利用了 Linux 容器技术。为了方便创建和管理这些容器,dotCloud 开发了一套内部工具,之后被命名为“Docker”。再后来dotCloud更名为现在的Docker公司
  • OCI :【The Open Container Initiative】开放容器计划,是一个旨在对容器基础架构中的基础组件(如镜像格式与容器运行时)进行标准化的管理委员会
  • Moby projetc:Docker开源项目,Moby 项目的目标是基于开源的方式,发展成为 Docker 上游,并将 Docker 拆分为更多的模块化组件

容器

因为Docker是一个开源的应用容器引擎,所以了解下容器是什么,容器可以看做是一个轻量化级别的虚拟机,所以通过与虚拟机对比,了解容器技术内容。

容器和虚拟机的区别

虚拟机:通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。虚拟机一旦被开启,预分配给它的资源将全部被占用。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
容器:容器是轻量级的操作系统级虚拟化,容器与宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器技术是实现操作系统虚拟化的一种途径,可以让资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。通过下面这幅图我们可以很直观的反映出这两者的区别所在。

容器和虚拟机区别架构图

在这里插入图片描述
左图是虚拟机,从下到上理解:

  • Infrastructure:基础设施,可以是个人电脑,数据中心的服务器,或者是云主机。
  • Host Operating System:主机操作系统
  • Hypervisor:虚拟机管理系统。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。Hypervisor分为类型1和类型2,其中类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V、Xen以及KVM。类型2的Hypervisor有VirtualBox和VMWare workstation。
  • Guest OS:客户机操作系统。假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个客户机操作系统,也就是3个虚拟机。这些虚拟机都非常大,它们将占用真实主机大量磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
  • Bins/Libs:各种依赖的二进制文件和库。每一个客户机操作系统都需要安装许多依赖。
  • App:应用软件。安装依赖之后,就可以在各个客户机操作系统分别运行应用了,这样各个应用就是相互隔离的。

右图是容器,从下到上理解:

  • Infrastructure:基础设施,可以是个人电脑,数据中心的服务器,或者是云主机。
  • Operating System:主机操作系统
  • Hypervisor:虚拟机管理系统。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。Hypervisor分为类型1和类型2,其中类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V、Xen以及KVM。类型2的Hypervisor有VirtualBox和VMWare workstation。
  • Container Engine:容器引擎,用来运行和管理容器的核心软件。通常人们会简单地将其代指为 Docker 或 Docker 平台。
  • Bins/Libs:各种依赖的二进制文件和库。每一个客户机操作系统都需要安装许多依赖。
  • App:应用软件。安装依赖之后,就可以在各个客户机操作系统分别运行应用了,这样各个应用就是相互隔离的。

通过架构图可以看出:
虚拟化技术,每创造一个虚拟机变会有一个操作系统,相对应的就要有一个独立的Kernel,而每一个Kernel又会占用真实主机的CPU,内存,和大量磁盘空间,而容器技术,则不需要创造新的系统,自然也就没有Kernel,和占用真实主机大量资源的问题了。 虚拟机与容器进行对比,显得比较笨重,占用更多的资源。

容器与虚拟机具体比对:

容器虚拟机
启动速度秒级分钟级别
系统资源资源少,轻量级资源多,重量级
硬盘使用一般为MB一般为GB
更新管理快速迭代式,决定了无论是开发、测试、部署都可以节约大量时间推送安装补丁升级
隔离性
安全性
稳定性不成熟体系成熟体系
保障体系体系不成熟,仅依靠快速重新部署体系成熟,负载均衡,高可用,容错,迁移和数据保护等成熟机制

Docker

Docker 三个基本概念:

  • 镜像【Image】:镜像就是一个只读的模板。镜像可以用来创建Docker容器。另外Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人哪里下载一个已经做好的镜像来直接使用。

  • 容器【Container】:容器是从镜像创建的运行实例,它可以被启动、开始、停止、 删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
    在这里插入图片描述
    一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。

  • 仓库【Repository】:仓库是集中存放镜像文件的场所。与仓库注册服务器【Registry】不一样。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签【tag】。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

    • 仓库分为公开仓库【Public】和私有仓库【Private】两种形式。
      在这里插入图片描述

Docker架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。 Docker 客户端和服务端可以运行在一台机器上,也可以通过RESTful,stock 或网络接口与远程 Docker 服务端进行通信。
在这里插入图片描述
Docker的架构结构:

  • Client客户端:向docker服务器进程发起请求,如:创建、停止、销毁容器等操作
    • Docker Client:Docker客户端,运行docker系列命令的命令行。
    • Docker Machine:是一个用于配置和管理你的宿主机(上面具有 Docker Engine 的主机)的工具。通常,你在你的本地系统上安装 Docker Machine。Docker Machine有自己的命令行客户端 docker-machine 和 Docker Engine 客户端 docker。你可以使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。
  • HOST主机:一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
    • local host:本地主机
    • remote host:远程主机
      • Docker daemon:Docker 守护进程
      • container:容器
      • image:镜像,已从加载在本地的镜像
  • Registry仓库注册服务器:用于管理镜像仓库,起到的是服务器的作用
    • Docker hub:Docker公司提供的仓库注册服务器
    • private registry:私有注册服务器,Docker 官方提供了 Docker Registry 镜像,可以直接使用镜像创建私有 Registry 服务
      • repository:仓库
        +image:镜像,仓库中存储的镜像

容器、镜像在客户端,主机,和仓库间的流转过程:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部