关于 Docker 容器技术 基础理论详解 !

       


       

看这里:

        戳此链接 通往 关于 Docker 所有的学习文章


1、Docker 为什么会出现?

       
        每当有一种新技术的出现,它肯定是有自己独特的特点的,或是为了满足一些需求的!那么 Docker 的出现 是为了满足什么需求呢?以及 它有什么独特的优点呢?

        当 开发人员 将写好的程序代码打包发给运维后,运维人员在部署这个程序的时候可能会因为 环境 和 配置问题 常常导致 这个程序不能正常使用! 比如开发人员是在 ubuntu 上写的,但是运维呢 需要在 云服务器或其他OS 上部署该程序,这就导致了部署不成功等问题…
       
        所以会面临:一个产品从开发到上线,从操作系统 、运行环境、应用配置。都需要 开发人员 和 运维人员 进行沟通、进行互相协作; 特别是程序的更新,不同版本环境的兼容,这都是考验!

        还有就是,配置环境会很麻烦,换一台机器,就要从来一次!费时费力,还容易出错!这时候就慢慢提出了从根本上解决这个问题:安装软件的时候 将其 环境 与 配置文件 等等 全部装在一起!

        举个更简单的例子:好比你去买汽车,店家肯定是给你组装好的汽车吧,并不是给你一堆零件和组装说明书让你回去自己组装,这就是好比 开发人员 将代码和完整的部署文件 交付给 运维团队,即便如此,也会常常发生 部署失败 的状况!Docker 将一个程序从基本的 代码/运行环境/配置… 等等全部都组装在一起,打包后的产物称之为 —— 镜像 !

Docker —— 一次构建,处处运行!
       
(前面你可以当成废话!记住最后这句话即可:)

        简而言之,一句话:Docker 首次为 应用的开发、运行 和 部署 提供了 “一站式” 的实用解决方案!
       


       

2、Docker 简介:

1、Docker 基于 go 语言实现!Docker —— 容器虚拟化技术!

2、Docker 主要目标 “build、ship and run any app,anywhere” ,即 通过对 应用的封装(packaging) 、分发(Distribution)、部署(deployment)、运行(Runtime)生命周期进行管理,达到 :“一次构建、到处运行!”

官网原话:
在这里插入图片描述

3、Docker 容器在任何的操作系统上面都是一致的!实现了 跨平台、跨服务器,只需要一次配置好环境,然后将环境打包成镜像,再别的服务器上面直接使用 docker 下载该镜像即可使用 ! 一键部署 !方便快捷 !

4、Docker 解决了 运行环境 和 配置问题;它方便做 “持续集成” ,并且有助于 整体发布 !
       


       

3、Docker 与 虚拟化:

       

3.1 虚拟化是啥?

        虚拟化是一种 资源管理技术!将计算机中的各种资源(内存、硬盘、网络…)予以抽象,转换后在呈现出来,打破了原来 实体结构 之间 不可切割的障碍!使得用户可以使用更好的方法来应用这些资源!
       


3.2 容器 和 虚拟化 :

        Docker 技术 —— 容器虚拟化技术 ! 关于 虚拟化技术 你又知道多少?Docker 是参考之前的 虚拟化 技术,一步步迭代、优化过来的。
       
        虚拟机: 带环境安装的一种,它可以在一个操作系统上安装另一个操作系统。对于应用程序来说,虚拟机就跟一个真实的操作系统一样;对于底层系统来说,虚拟机就是一个普通文件,不需要就删除对于系统没有什么影响!
       
虚拟机的缺点: 占用系统资源大、冗余步骤多、启动速度慢…
       
        根据这些 虚拟机 的缺点,Linux 发展出了另一种虚拟化技术!—— LXC (Linux Container;Linux容器);LXC 并不是模拟一个完整的操作系统,而是通过对进程进行隔离!不需要捆绑整个操作系统,只需要软件工作所需要的资源和设置 即可 !所以 系统就变得 高效且轻量,并且保证了在任何环境中都可以正常运行!
       
       
容器技术 与 传统虚拟化技术 的不同之处:

        传统虚拟化技术: 先虚拟出一套硬件,然后在这套硬件上面运行一个完整的操作系统,在该操作系统上面在运行所需要的应用!

        然而,容器技术却不需要虚拟硬件,也不需要模拟一个完整的操作系统,容器内的所有进程都依赖于 宿主机 的内核 ! 因此 ,容器技术比 传统虚拟化技术更受欢迎,更加轻便!

       
传统虚拟机(虚拟硬件上 再运行一个操作系统):
在这里插入图片描述
       


       

4、容器 和 传统虚拟机 的对比:

在这里插入图片描述
对比图:在这里插入图片描述
       


       

5、Docker 的优缺点:

       

优点:

1、更快的部署 和 交付:

        使用 Docker ,开发人员可以使用镜像来快速的构建一套标准的开发环境! 开发完成之后,还可以直接对该环境进行打包;测试及运维人员可以使用完全相同的环境来部署代码!

        节约开发、测试、部署的大量时间!

       

2、资源利用率高:

        Docker 是内核级别的虚拟化,不需要虚拟硬件、独立OS 的支持,对资源的额外需求也很低!
       

3、启动速度快…

       

4、易于 扩展 和 移植 !

        Docker 几乎可以在任意平台上运行,包括:物理机、虚拟机、云平台(公私云)、个人电脑、服务器… 等,同时还支持主流的 操作系统发行版本! 这种兼容性可以让我们在不同平台、不同服务器之间轻松的迁移 !
       

5、更方便的管理:

        使用 Dockerfile ,只需要小小的配置修改,就可以替代以往 大量的更新工作 !
       
       

缺点:

1、隔离性差:

        因为 传统虚拟化为 OS 隔离容器技术的隔离是 进程隔离,虽然有好处,但是隔离性说到底还是不如 OS 隔离 !尽管如此,进程隔离也是安全的!
       

2、调试工具:

        传统的服务运行架构在一个kernel 、一个namespace 上,所有 服务共用一个调试工具 !

        在容器技术中,每个服务运行在单独的容器中,每个容器都是一个单独的 namespace,所以每个容器都需要一套独立的调试工具!
       


       

6、百花齐放的容器技术 :

       
        上面提到了: 由于 传统虚拟化存在:占用资源多、启动速度慢…等等缺点,慢慢根据这些缺点发展出了另一种虚拟化技术 —— LXC (Linux Caontainer ),现在的 Docker 技术 就是站在 LXC 的肩膀上 !

注意:Docker 并不是最早的容器技术,却是最火的容器技术。
在这里插入图片描述
       


       

7、Docker 的组件 :

在这里插入图片描述
       


       

8、Docker 工作原理:

在这里插入图片描述
1)、Docker引擎创建容器映像

2)、将容器映像传递给 containerd (容器运行时)

3)、containerd 调用 containerd-shim(本地编排工具)

4)、containerd-shim 使用 runC(命令行工具)来运行容器

发布了99 篇原创文章 · 获赞 72 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ljlfather/article/details/105430423
今日推荐