您的位置:首页 > 运维架构 > Docker

Docker基本组件、概念介绍

2021-03-26 14:58 706 查看

一、容器是什么

    1. 生活中

        生活中容器代表某件物品能容纳、装载某些东西;如一个瓶子,可以分别装可乐、雪碧;也可以混合装白酒、红酒;此时的瓶子就是一个容器。

    2. IT界中

        在IT界中,容器是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。

二、Docker是什么

    1. 通俗理解

        Docker就是IT界中容通俗器技术实现方式;Docker类似于瓶子,而应用模块类似于饮料。瓶子太多了怎么办?会用箱子打包起来批量放置;此时箱子就类似于服务器,可以承载多个容器;每个瓶子装载的资源是相互隔离的,A瓶子裂了漏水,不会影响B瓶子的容量以及质量。

    2. 版本

        日常所说的Docker主要是指Docker引擎,主要有2个版本:企业版(EE)、社区版(CE)。

            CE:免费使用,社区版会提供4个月的支持和维护。

            EE:收费使用,企业版会提供12个月的支持和维护; 。

三、Docker由什么组成

    1. Docker是传统的CS架构,主要由Docker client、Docker daemon,而官方又将daemon拆解重构为多个模块,如:containerd、runc。

       Docker client

            在Linux上主要通过Socket(/var/run/docker.sock)与Docker Daemon进行通信;类似于MySQL的mysql client与mysql-server。

       Docker daemon

            提供Api接口,返回client响应

       containerd

            容器生命周期管理---start|stop|run|delete....

       runc

            创建容器

四、Docker 三个基本概念

    1. 镜像

        简单理解镜像就是一个只读的模板;深入来讲是一种轻量级,可执行的独立文件系统,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件的所有内容,包括代码运行时环境变量和配置等文件。

        以为代码案例,可以更好理解镜像的特点。

def Clac(argv1, argv2):
    try:
        inc_argv3=4
        sum_result = argv1 + argv2 + inc_argv3
    except Exception as e:
        sum_result = str(e)
    return sum_result

        此时的**Clac**类就是一个模板,可以创建多个对象,如sum1=Clac(argv1,argv2)、sum2=(argv1,argv2)

        特点

            a. 由一行或多行特定的指令形成的一个模板;也被称为镜像文件。

            b. 包含应用运行所依赖的文件、依赖包、环境等配置。  

            c. 从外部来看,镜像就是一个独立的对象,相当于一个简易的操作系统。  

    2. 容器

        容器就是镜像运行的实例,每个容器都可以被启动,开始,停止,删除,同时容器之间相互隔离,保证应用运行期间的安全。 

        调用镜像Clac为例

sum1=Clac(1,2)
sum2=Clac(1,"2")

        此时**sum1**、**sum2**是调用类**Clac**创建的对象,也就是容器。

    特点:

        a. 由**一层或多层镜像**封装好的一个实例。

        b. 实例被创建后,里面的资源不可再做更改。  

        c. 当镜像被修改后,已创建的实例不会变更;新创建的实例会继承镜像修改后的特性。

        d. 删除容器前未删除关联的镜像,容器会删除失败。  

        e. 一个容器对应一个镜像,但一个镜像可以对应多个容器。

    3. 仓库

        集中存放镜像文件的场所,代码写完后一般会上传svn或gitlab托管库,当需要使用或变更时直接下载/上传即可;此时的仓库充当svn或gitlab角色。

        仓库类型

            a. 私有仓库(Private Registry)

                docker-registry (docker官方提供的工具)    

            b. 共有仓库(Public Registry)

                Docker Hub(因国内网络原因,下载镜像很蛋疼)  

                开源技术,如Harbor  

                厂商提供,如阿里云、网易云

五、Docker 镜像、模板、仓库三者之间的关联

六、Docker优势是什么(解决人肉运维什么痛点)

  1.  简化部署过程

    只需要在第一次部署时,构建完可用的Docker镜像,后续再次部署时直接拉取镜像即可。  

  • 弹性伸缩

      当组件需要扩容时,直接拉取镜像启动即可(无状态服务)。

  • 可以移植性强

      跨云平台迁移,基于容器制作镜像或拉取镜像部署。  

  • 资源隔离

      同服务器可运行多版本jdk项目,互不影响。

  • 环境统一性

      环境不一致往往是造成问题最高的原因,通过镜像可很好掌控环境不一致问题。  

  • 版本控制

      基于不通镜像设定不同仓库版本号,可随意发布任意版本。

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: