容器的架构组成(二)Docker + Kubernetes学习

容器的架构组成

  • 容器镜像:包含了阉割的操作系统以及所提供的应用程序的一个打包的文件
    • redis镜像
    • nginx镜像
    • httpd镜像
  • 镜像仓库:用于存储容器镜像,以便于镜像的分发
    • 公共镜像仓库
    • 私有镜像仓库
  • 容器:镜像运行起来就是容器,容器提供应用级别的服务


容器架构组件作用:

Docker:

docker-api:接收用户的请求;
runc:runc是一个工具,用来运行创建容器的,调用namespace和cgroup,在创建完后退出;
containerd(核心):标准的容器运行时,负责启动容器,计算资源的分配,隔离;本质上一个容器只包含计算部分,这部分被称为容器的“运行时
containerd-shim:在容器创建完成时,这个容器的父进程会被containerd接管,containerd为了避免docker挂掉造成容器退出所以containerd,将容器的父进程交给containerd-shim;

容器的架构组成(二)Docker + Kubernetes学习_第1张图片

Kubernetes:容器编排(管理)系统

如有10台机器上有1000个容器,那么Kubernetes负责管理容器在众多节点上的调度
早期的Kubernetes将docker作为容器的运行时,对于网络和存储,Kubernetes是很开放的,允许接入第三方插件;
只需支持Kubernetes提供的cri(容器运行时接口)、cni(网络接口)、csi(存储接口)

如:opnestack除了支持KVM以外,同样也可以支持Xen,openstack本身不提供虚拟化功能;Kubernetes也是如此,他除了可以使用docker也可以使用其他的容器运行时,但必须支持cri

为什么Kubernetes要废除Docker了

虽然Kubernetes使用的是docker作为容器的运行时,但是docker本身是不支持Kubernetes支持的cri容器运行时接口的,当时的Kubernetes没有话语权,只好研发出了docker-shim,将cri的请求交给docker-shim翻译成docker-api能够识别的请求。
但docker败给Kubernetes后,dockcer将containerd单独剥离出来捐献给了云原生基金会(CNCF),社区基于containerd做了二次开发,支持了cri。
在1.22版本正式不支持docker(删除了docker-shim代码),Kubernetes使用的是containerd作为容器的运行时

你可能感兴趣的:(Docker,+,Kuberneter,容器,架构,docker)