Docker和k8s的区别与介绍

Docker技术的三大核心概念,分别是:

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

对Docker镜像进行管理的,是Docker Registry服务

最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的Registry,并拥有大量的高质量的官方镜像

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

一个K8S系统,通常称为一个K8S集群(Cluster)。
这个集群主要包括两个部分:

  • 一个Master节点(主节点) Master节点主要还是负责管理和控制
  • 一群Node节点(计算节点) Node节点是工作负载节点,里面是具体的容器

Master节点包括API Server、Scheduler、Controller manager、etcd。

  • API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。
  • Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
  • Controller manager负责管理控制器,相当于“大总管”。

Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。

  • Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。除了Pod之外,K8S还有一个Service的概念,一个Service可以看作一组提供相同服务的Pod的对外访问接口
  • Docker,不用说了,创建容器的。
  • Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
  • Kube-proxy,主要负责为Pod对象提供代理
  • Fluentd,主要负责日志收集、存储与查询

5G时代,核心网采用微服务架构,也是和容器完美搭配——单体式架构(Monolithic)变成微服务架构(Microservices),相当于一个全能型变成N个专能型。每个专能型,分配给一个隔离的容器,赋予了最大程度的灵活。

按照这样的发展趋势,在移动通信系统中,除了天线,剩下的部分都有可能虚拟化。核心网是第一个,但不是最后一个。虚拟化之后的核心网,与其说属于通信,实际上更应该归为IT。核心网的功能,只是容器中普通一个软件功能而已。


docker和虚拟机的区别:

  • 虚拟机的性能比较依靠于硬件,而docker开源且轻量化,构建在操作系统中,更加轻便
  • docker的轻量化适用于部署少量的应用,例如一个docker容器部署一个Redis或者mysql。。。
  • docker基于dockerfile来进行构建容器,程序人员可以手动编写dockerfile来指定相应的系统环境和依赖

docker的镜像和容器介绍:

容器的本质就是进程,不同的容器有着自己独立的root文件系统,网络配置,一个隔离的空间。容器一旦消失,则里面包含的数据也会发生丢失。容器里面所有的存储信息都应该使用数据卷或者其他形式。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

docker的特点:

  • 文件系统隔离,每个不同的容器都存在不同的独立文件系统中
  • 资源隔离,每个容器都有自己独立的ip、网络和虚拟接口
  • 日志记录,docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或者批量检索