【进大厂必学】头条面试官让我最好学习点容器技术,Docker基础万字全解?

这周分享的内容是关于 Docker 的基础,大概的内容分为下面的两个部分,另外还做了个视频,其实这个视频仅仅用来娱乐娱乐而已

前言

第一趴—Docker容器圈简介

Docker容器圈简介


第二趴—Docker基本操作

Docker基本操作


容器圈

容器这个新生事物,现在还可以说是新生事物吗?对于我们学生而言,我觉得没毛病,你说呢?

容器技术可说重塑了整个云计算市场的形态,带动了一批年轻有为的容器技术儿,不过「容器」这个概念是 Docker 公司发明的么,不是,它只是众多 Pass 项目中的最底层,没人关注的那一部分而已。

什么是Pass项目?

Pass 项目之所会被很多公司所接受,自然是因为解放了部分开发人员的劳动力,尽快干玩活儿早点下班。其依赖的就是「应用托管」的能力,在电脑上斗过地主的应该知道,托管了以后就会自动出牌,同样的道理,为了尽量的弥补本地和云上的环境差异,就出现了 Pass 开源项目。

举个例子来说,运维人员小仙云上部署一个 Cloud Foundry 项目,开发人员只需要简单的一行代码就可以实现将本地的应用部署到云上

就这样一行代码就实现了将本地应用上传到云上,属实很轻松。

那么这个命令执行的基本原理是怎样的?

实际上,我们可以将其最核心的组件理解为一套应用的打包分发机制。云上部署的 Cloud Foundry 会为大部分编程语言定义一种打包的格式,当开发人员执行命令的时候,实际上是将可执行文件启动脚本打包上传到云上的Coulud Foudry 中,然后 Cloud Foundry 通过相应的调度器选择一个虚拟机的 Agent 将压缩包下载后启动

那如何区分虚拟机中的不同应用呢?

虚拟机一般不可能只跑一个应用,因为这样确实也太浪费资源了,我们可以想想,现在手上的电脑,可以用 Vmvare 导入几个虚拟机,所以诸如 Cloud Foundry 通过引入操作系统的 CgroupsNamespace 等机制,从而来为每个应用单独创建一个叫做「沙盒」的隔离环境,然后在这些「沙盒」中启动应用,通过这样的方法就让虚拟机中应用各自互不干扰,让其自由翱翔,至于 Cgroups 和 **Namespace **的实现原理,后续我们再共同的探讨

这里所谓的隔离环境就是「容器」。

那 Docker 和这 Pass 项目的 Cloud Foundry 的容器有啥不一样?

自然不一样,不然现在我们一旦提到容器,想到的不会是 Docker,而是 Cloud Foundry 了吧。Cloud Foundry 的首席产品经理就觉得没什么,毕竟自己放的屁都是香的!

不一样,而且当时还发了一份报告,报告中还写到:“ Docker 不就是使用了 CgroupsNamespace 实现的「沙盒」而已,不用过于关注”。

没想到的是,随后短短的几个月,Docker 项目迅速起飞以至于其他所有 Paas 社区都还没来及反应过来,就已经宣告出局

什么魔力让 Docker 一发不可收拾?

就是提出了镜像的概念。上面我们说过,Paas 提供的一套应用打包的功能,看起很轻松省事,但是一旦使用了Paas,你就要终身服务于它,毕竟他是提供商,是「爸爸」,用户需要为每个版本,每种语言去维护一个包,这个打包的过程是需要多次的尝试,多次试错后,才能摸清本地应用和远端 Paas 的脾气,从而顺利部署。

Docker 镜像恰恰就是解决了打包这一根本问题。

什么是Docker镜像?

Docker 镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境。

这就很牛皮了,如果我们的应用是在 Centos7 上部署,我们只需要将项目环境部署在基于 Centos7 的环境中,然后无论在哪里去解压这个压缩包,都可以保证环境的一致性。在整个过程中,我们根本不需要进行任何的配置,因为这个压缩包可以保证:本地的环境和云端是一致的,这也是 Docker 镜像的精髓

开发者体验到了 Docker 的便利,从而很快宣布 Paas 时代的结束,不过对于大规模应用的部署,Docker 能否实现在当时还是个问号

就在 2014 年的 DockerCon 上,紧接着发布了自研的「Docker swarm」,Docker 就这样 一度奔向高潮,即将就到达了自己梦想之巅。

为什么会推出Docker Swarm?

虽然 Docker 通过「容器」完成了对 Paas 的「降维打击」,但是 Docker 的目的是:如何让更多的开发者将项目部署在自己的项目上,从技术,商业,市场多方位的争取开发者的群体,为此形成自家的 Paas 平台做铺垫

Docker 项目虽然很受欢迎,就目前看来只是一个创建和启动容器的小工具。需要应该清楚的一点是,用户最终部署的还是他们的网站,服务甚至云计算业务。所以推出一个完整的整体对外提供集群管理功能的 Swarm 势在必行,这个项目中的最大亮点即直接使用了 Docker 原生的 API 来完成对集群的管理。

对于单机项目,只需要执行下面一条语句即可实现容器

对于多机的项目,只需要执行

你看,从单机切换到多机,使用的方法也就参数不同而已,所以这样一个原生的「Docker容器集群管理」一发布就受到大家的青睐。随着自身生态的逐渐完善,借助这一波浪潮并通过各种并购来强大自己的平层能力

要说最成功的案例,非 Fig 项目莫属。之所以这么屌,是因为作者提出了「容器编排」的概念。

什么是容器编排?

其实这也不是什么新鲜内容,比如在 Linux 中的 Makefile和常见的 SHELL 脚本,它是一种通过工具或者配置来完成一组虚拟机或者关联资源的定义、配置、创建等工具。

容器的编排是怎么样的呢

我们先以 Fig 为例,假设开发人员小黑,现在要部署一个项目,其中包含了应用容器 A,数据库容器 B,负载容器 C,这个时候 Fig 只需要将三个容器定义在一个配置文件,然后指定他们的关联关系,执行下面的命令即可

当然也可以在 Fig 的配置文件中配置各种容器的副本,然后加上 Swarm 的集群管理功能,这样不就是 Paas 了么。只是这个项目被收购以后,修改名字为 compose 了,后续也会的 compose 进行详细的阐述


就这样一个以「鲸鱼」为商标的 Docker,火遍全球,因为它秉持将「开发者」群体放在食物链的顶端。一分钟实现网站的部署,三分钟搭建集群,这么多年以来,很多后端开发者很少将眼光放在 Linux 技术上,开发者们为了深入的了解 Docker 的技术原理,终于将眼光放入诸如 CgroupsNamespace 技术中。

就在这一时之间,后端及云计算领域的大佬都汇聚于这个「小鲸鱼」的身边。随后到了考虑集群的方案,论集群的管理调度能力,还不得不提 BerkeleyMesos,专注于大数据领域,

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值