zoukankan      html  css  js  c++  java
  • docker学习--基础简介

    一、Docker简介

     1.理念

      docker是基于GO语言实现的云开源项目。

      docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(也可以是一个web应用或数据库应用或中中间件应用等等)及其运行环境做到“一次封装,到处运行”。

    2.解决的问题

       解决了应用在开发环境移植到测试环境不适配的问题,方便做持续集成并有助于整体发布。

    3.虚拟机技术

       虚拟机它是操作系统里面运行的另一种操作系统。例在windows系统里面运行linux系统,应用程序对此毫无感知,因为虚拟机看上云跟真实的系统是一模一样的,而对于底层操作系统来说,虚拟机就是一个普通文件,不需要时直接将其删除即可,它虚拟

    出了操作系统、内存、硬件设备等等。也就是说虚拟机虚拟了整个操作系统所需要的环境信息,包括硬件(内核 CPU 内存) 和一些软件信息,

       虚拟机的缺点:

        1.资源占用多  2.冗余步骤多  3.启动慢

             也就是说我每想使用一个操作系统运行一个应用,就必须把整个操作系统虚拟出来,但是这样又会占用大量的硬件资源

    4.容器虚拟化技术

      由于前面虚拟机存在的缺点,linux发展出了另一种虚拟化技术:linux容器(Linux Containers  缩写LXC)

      Linux容器不是模拟一个完整的操作系统,它只需要构建运行所必须的库资源就可以,有了容器,就可以将软件运行所需要的资源打包到一个隔离的容器中,容器中的应用进程直接运行于宿主机的内核上,容器没有自己的内核,也就没有对硬件进行虚拟机,因此容器变得更轻量。容器用到的硬件资源就会依赖于宿主机的硬件资源。

      容器利用自身的隔离性和运行环境的独立性,依赖操作系统的一些硬件设备,使得容器可以做到一次构建,到处运行,因此容器要比传统的虚拟机更为轻巧方便,它的启动是秒级的

      每个容器之间互相隔离,每个容器有自己的库资源文件系统,相互不影响。

     5.容器化技术的优点

        更简单的系统运维

      更快捷高效的交付和部署

      更便捷的移植性、扩容性

    二、docker原理

    1.docker是怎么工作的 

             docker是一个client-server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端接受访问,守护进程从客户端接受命令,并管理运行在主机上的容器。

    2.docker为什么会比VM快

      ①docker有比虚拟机更少的抽象层。

        由于docker不需要Hypervisor实现硬件资源的虚拟化,运行在docker容器上的程序直接使用的都是宿主机上的硬件资源,因此在CPU、内存利用率上docker将会在效率上有明显优势。

      ②docker利用宿主机的内核,而不是Guest os(虚拟机操作系统)。

        当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核,它会使用宿主机的内核。这样做的好处就是减少了加载系统内核的过程。

       虚拟机软件(vmware 和 virtualbox)在创建虚拟机的时候会通过Hypervisor来管理和创建多个不同操作系统的虚拟机,通过这种方式创建虚拟机需要实现硬件资源的虚拟化,因为它是一个完整的操作系统。这个过程是分钟级的,而docker是利用自身的隔离性和运行环境的独立性,依赖宿主机硬件资源,从而达到了启动只需几秒。

    三、Docker架构

    1.镜像

      Docker 镜像(Image)就是一个只读的模板.镜像可以用来创建多个docker 容器

    2.容器

      docker利用容器(Container)独立运行的一个或一组应用,容器是用镜像创建的运行实例。

      它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台,可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序(redis nginx mysql mycat )

      容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

    3.仓库

      仓库(Repository)是集中存放镜像文件的场所。

      仓库(Repository)和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)

      仓库分为公开仓库(Public)和私有仓库(Private)两种形式,最大的公开仓库是 Docker Hub(https://hub.docker.com/) 存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等

    4.总结

      用户可以通过仓库(公、私)下载镜像(images),然后通过镜像可以运行多们容器。

      用户可以通过maven仓库下载某jar包,然后通过jar包new出多个对象运行

    四、镜像原理

    1.介绍

      镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

    2.UnionFS(联合文件系统):

      Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)

      Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

      特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

    3.Docker镜像加载原理

       docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFSbootfs(boot file system)主要包含bootloaderkernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs

      rootfs (root file system) ,bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如UbuntuCentos等等。

    对于一个精简的OSrootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Hostkernel,自己只需要提供 rootfs 就行了。由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs

    以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载

    最大的一个好处就是 - 共享资源

    比如:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,

    同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

    4.特点

      Docker镜像都是只读的

      当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作"容器层","容器层"之下的都叫"镜像层"。

      

  • 相关阅读:
    Windows SDK编程(Delphi版) 之 应用基础,楔子
    一个小问题引发的论证思考
    Delphi 组件开发教程指南(7)继续模拟动画显示控件
    用PyInstaller将python转成可执行文件exe笔记
    使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
    Microsof Office SharePoint 2007 工作流开发环境搭建
    How to monitor Web server performance by using counter logs in System Monitor in IIS
    LINQ之Order By
    window 性能监视器
    内存泄露检测工具
  • 原文地址:https://www.cnblogs.com/MrRightZhao/p/12880188.html
Copyright © 2011-2022 走看看