什么是docker

什么是容器?

容器是Linux  Container 的直译,应该是集装箱技术,它是内核轻量级的操作系统虚拟化技术,是基于GO语言,并遵从Apache2.0协议开源,也就是说你可以用这个来进行开发,然后卖钱,阿里也招go的开发,因为阿里想自己做一个这种容器技术,所以我们有必要要深入研究go语言,研究docker的底层。

为什么会诞生容器技术?

因为在早期的操作系统是基于hypervisor技术来进行衍生、运行、销毁。然而基于hypervisor每台虚拟机都需要运行一个完整的操作系统以及需要按照各种应用程序软件,在生产环境中,我们更加关注的是自己部署的应用程序,如果每次发布都需要使用操作系统+依赖环境,这会让任务性能变的很重很低下。容器化技术就是共享一些底层的操作系统和应用,让开发人员关注应用本身,我部署好一个服务之后,我想移植到另外一个地方,我可以不用再安装一套操作系统和依赖环境。Linux  Container技术的出现,解决了IT领域,集装箱的问题。

容器技术的组成有哪些?

Linux Container主要是由Namespace和CGroup组成,Namespace起到的是各种应用程序的隔离作用,CGroup技术就是负责资源管理控制作用,比如进程组使用CPU/MEM的限制,如下图所示:

 

 容器技术的优势有哪些?

1、极其轻量,只打包了必要的Bin/Lib;

2、秒级部署:根据镜像的不同,容器的部署大概在毫秒与秒之间(比虚拟机强很多);

3、易于移植:一次构建,随处部署;

4、弹性伸缩:Kubernets、Swam、Mesos这类开源、方便、好使的容器管理平台有着非常强大的弹性管理能力。

docker和容器的关系?

docker只是容器的一种实现,容器技术有很多家公司,docker只是比出名的公司。2015年,由多家公司(包括Google、Docker、CoreOS、RedHat公司)联合发起的OCI(Open Container Initiative)组织成立了,于2016年4月推出第一个开发标准容器,包括runtime运行时、image镜像标准。这有助于推动市场成长、稳定。企业采用容器技术,用户在打包、部署应用程序后,可以自由选择不同的容器Runtime;同时,镜像打包、建立、认证、部署、命名也能够按照统一的规范来做。

Docker两种标准详解:

  1、容器运行时标准(runtime spec)

  a、creating:使用create命令创建容器,这个过程称为创建

  b、created:容器创建出来,但是还没有运行,表示镜像和配置没有错误,容器能够运行在当前平台

  c、running:容器处于运行状态,里面的进程处于up状态,正在执行用户设定的任务

  d、stopped:容器运行完成,或者运行出错,或者stop命令后的容器处于暂停状态。这个状态,容器还有很多信息保存在平台中,并没有被删除

  2、容器镜像标准(image  spec)

 

容器的应用场景有哪些?

  1、容器化传统应用  容器不仅能提高现有应用的安全性和可移植性,还能节约成本。

    每个企业的环境中都有一套较旧的应用来服务于客户或自动执行业务流程。即使是大规模的单体应用,通过容器隔离的增强安全性、以及可移植特点,也能从Docker中获益,从而降低成本。一旦容器化之后,这些应用可以扩展额外的服务或者转变到微服务架构上。

     2、持续继承和持续部署(CI/CD)通过Docker加速应用管道自动化和应用部署,交付速度至少提高13倍。

    现代化开发流程快速、持续且具备自动执行能力,最终目标是开发出更加可靠的软件。通过持续集成(CI)和可持续部署(CD),每次开发人员签入代码并顺利测试之后,IT团队都能够集成新代码。作为开发运维方法的基础,CI/CD创造了一种实时反馈回路机制,持续传输小型迭代更改,从而加速更改,提高质量。CI环境通常是完全自动化的,通过GIT推送命令触发测试,测试成功时自动构建新镜像,然后推动到Docker镜像库。通过后续的自动化和脚本,可以将新镜像的容器部署到预演环境,从而进行进一步测试。

 3、微服务  加速应用架构现代化进程

  应用架构正在从采用瀑布模型开发法的单体代码库转变为独立开发和部署的松耦合服务。成千上万这样的服务相互连接就形成了应用。Docker允许开发人员选择最合适于每种服务的工具或技术栈,隔离服务以消除任何潜在的冲突,从而避免地狱式的矩阵依赖。这些容器可以独立于应用的其他服务组件,轻松的共享、部署、更新和瞬间扩展。

  Docker端到端安全功能让团队能够构建和运行最低权限的微服务模型,服务所需的资源(其他应用、涉密信息、计算资源等)会适时被创建并被访问。

    4、IT基础设施优化 充分利用基础设施,节省资金

  Docker和容器有助于优化IT基础设施的利用率和成本。优化不仅仅时削减成本,还能确保在适当的时间有效的使用适当的资源。容器是一种轻量级的打包和隔离应用工作负载的方法,所以Docker允许在同一物理或虚拟服务器上毫不冲突的运行多项工作负载。企业可以整合数据中心,将并购过来的IT资源进行整合,从而获得向云端的可迁移性,同时减少操作系统和服务器的维护工作。

docker属于轻量级虚拟化,它启动时间很快,几秒钟就可以完成。而且,它对资源的利用率很高(一台主机可以同时运行几千个Docker容器),VMware一般需要几GB到几十GB的空间,而容器只需要MB级甚至KB级。

 

 

 Docker就是Build once,Run anywhere(搭建一次,到处能用)

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes

一个K8S系统,通常称为一个K8S集群(Cluster)

这个集群主要包括两个部分:

  • 一个Master节点(主节点)
  • 一群Node节点(计算节点)

从几十年前的1G,到现在的4G,再到将来的5G,移动通信发生了翻天覆地的变化,核心网亦是如此。

但是,如果你仔细洞察这些变化,会发现,所谓的核心网,其实本质上并没有发生改变,无非就是很多的服务器而已。不同的核心网网元,就是不同的服务器,不同的计算节点。

变化的,是这些“服务器”的形态和接口:形态,从机柜单板,变成机柜刀片,从机柜刀片,变成X86通用刀片服务器;接口,从中继线缆,变成网线,从网线,变成光纤。

就算变来变去,还是服务器,是计算节点,是CPU。

既然是服务器,那么就势必会和IT云计算一样,走上虚拟化的道路。毕竟,虚拟化有太多的优势,例如前文所说的低成本、高利用率、充分灵活、动态调度,等等。

前几年,大家以为虚拟机是核心网的终极形态。目前看来,更有可能是容器化。这几年经常说的NFV(网元功能虚拟化),也有可能改口为NFC(网元功能容器化)。

以VoLTE为例,如果按以前2G/3G的方式,那需要大量的专用设备,分别充当EPC和IMS的不同网元。而采用容器之后,很可能只需要一台服务器,创建十几个容器,用不同的容器,来分别运行不同网元的服务程序。

这些容器,随时可以创建,也可以随时销毁。还能够在不停机的情况下,随意变大,随意变小,随意变强,随意变弱,在性能和功耗之间动态平衡。

简直完美!

5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。按照这样的发展趋势,在移动通信系统中,除了天线,剩下的部分都有可能虚拟化。核心网是第一个,但不是最后一个。虚拟化之后的核心网,与其说属于通信,实际上更应该归为IT。核心网的功能,只是容器中普通一个软件功能而已。

 

posted @ 2020-10-11 19:17  洛飞  阅读(292)  评论(0编辑  收藏  举报