美文网首页
03-Docker基础知识

03-Docker基础知识

作者: wshsdm | 来源:发表于2020-11-16 22:26 被阅读0次

    1 虚拟化技术与Docker的比较

    • 什么是虚拟化技术
      虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器,这样做的话,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离,如下图所示:


      image.png
    • 虚拟机的优点
      可以把资源分配到不同的虚拟机,达到硬件资源的最大化利用
      与直接在物理机上部署应用,虚拟更容易扩展应用。
      云服务:通过虚拟机虚拟出不同的物理资源,可以快速搭建云服务。
    • 虚拟机的不足之处
      虚拟机的不足之外来自于对物理服务器资源的消耗,当我们在物理服务器创建一台虚拟机时,便需要虚拟出一套硬件并在上面运行完整的操作系统,每台虚拟机都占用许多的服务器资源。
    • Docker是什么
      相对于虚拟机的笨重,Docker则更显得轻量化,因此不会占用太多的系统资源。
      Docker是使用时下很火的Golang语言进行开发的,其技术核心是Linux内核的Cgroup,Namespace和AUFS类的Union FS等技术,这些技术都是Linux内核中早已存在很多年的技术,所以严格来说并不是一个完全创新的技术,Docker通过这些底层的Linux技术,对Linux进程进行封装隔离,而被隔离的进程也被称为容器,完全独立于宿主机的进程。如果你想和更多Docker技术专家交流,可以加我微信liyingjiese,备注『加群』。群里每周都有全球各大公司的最佳实践以及行业最新动态。
      所以Docker是容器技术的一种实现,也是操作系统层面的一种虚拟化,与虚拟机的通过一套硬件再安装操作系统完全不同。


      image.png
    • Docker与虚拟机之间的比较
      Docker是在操作系统进程层面的隔离,而虚拟机是在物理资源层面的隔离


      image.png

    2 容器解决了开发与生产环境的问题

    开发环境与生产环境折射的是开发人员与运维人员之间的矛盾,也许我们常常会听到开发人员对运维人员说的这样一句话:“在我的电脑运行没问题,怎么到了你那里就出问题了,肯定是你的问题”,而运维人员是认为是开发人员的问题。
    容器就是一个不错的解决方案,容器能成为开发与运维之间沟通的语言,因为容器就像一个集装箱一样,提供了软件运行的最小化环境,将应用与其需要的环境一起打包成为镜像,便可以在开发与运维之间沟通与传输。

    3 Docker的版本

    Docker分为社区版(CE)和企业版(EE)两个版本,社区版本可以免费使用,而企业版则需要付费使用,对于我们个人开发者或小企业来说,一般是使用社区版的。
    Docker CE有三个更新频道,分别为stable、test、nightly,stable是稳定版本,test是测试后的预发布版本,而nightly则是开发中准备在下一个版本正式发布的版本

    4 Docker的组成与架构

    Docker跟大部分服务端软件一样(如MySQL),都是使用C/S的架构模型,也就是通过客户端调用服务器,只是我们现在刚好服务端和客户端都在同一台机器上而已。
    因此,我们可以使用下面的图来表示Docker的架构,DOCKER_HOST是Docker Server,而Clinet便是我们在命令中使用Docker命令。


    image.png

    5 Docker Engine

    Docker Server为客户端提供了容器、镜像、数据卷、网络管理等功能,其实,这些功能都是由Docker Engine来实现的。
    dockerd:服务器守护进程。
    Client docker Cli:命令行接口
    REST API:除了cli命令行接口,也可以通过REST API调用Docker
    下面是Docker Engine的示例图:


    image.png

    6 Docker的基本概念

    镜像(Image)、容器(Container)与仓库(Repository),这三个是Docker中最基本也是最核心的概念,对这三个概念的掌握与理解,是学习Docker的关键。

    • 镜像(Image)
      Docker本质上是一个运行在Linux操作系统上的应用,而Linux操作系统分为内核和用户空间,无论是CentOS还是Ubuntu,都是在启动内核之后,通过挂载Root文件系统来提供用户空间的,而Docker镜像就是一个Root文件系统。
      Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
      镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。
    • 容器(Container)
      Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。
    • 仓库(Repository)
      在前面的例子中,我们使用两种方式构建镜像,构建完成之后,可以在本地运行镜像,生成容器,但如果在更多的服务器运行镜像呢?很明显,这时候我们需要一个可以让我们集中存储和分发镜像的服务,就像Github可以让我们自己存储和分发代码一样。
      Docker Hub就是Docker提供用于存储和分布镜像的官方Docker Registry,也是默认的Registry,其网址为https://hub.docker.com,前面我们使用docker pull命令便从Docker Hub上拉取镜像。

    Docker Hub有很多官方或其他开发提供的高质量镜像供我们使用,当然,如果要将我们自己构建的镜像上传到Docker Hub上,我们需要在Docker Hub上注册一个账号,然后把自己在本地构建的镜像发送到Docker Hub的仓库当中,Docker Registry包含很多个仓库,每个仓库对应多个标签,不同标签对应一个软件的不同版本。

    相关文章

      网友评论

          本文标题:03-Docker基础知识

          本文链接:https://www.haomeiwen.com/subject/tuftiktx.html