其他分享
首页 > 其他分享> > Docker基本组件、概念介绍

Docker基本组件、概念介绍

作者:互联网

一、容器是什么

    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、run。

       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. 容器

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

镜像和容器的关系.png

        调用镜像Clac为例

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

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

    特点:

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

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

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

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

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

    3. 仓库

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

仓库多版本控制.png

        仓库类型

            a. 私有仓库(Private Registry)

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

            b. 共有仓库(Public Registry)

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

                开源技术,如Harbor  

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

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

三者之间关联.png

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

  1.  简化部署过程

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

  2. 弹性伸缩

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

  3. 可以移植性强

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

  4. 资源隔离

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

  5. 环境统一性

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

  6. 版本控制

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

标签:容器,仓库,Clac,瓶子,概念,组件,镜像,Docker
来源: https://blog.51cto.com/wangtianci/2673148