容器:
应用程序的开发因为容器的出现发生了巨大的变化,传统的应用程序的开发时大而全,身份验证 安全加密 负载均衡等等app都要做
容器出现之后作为现代应用程序的开发
云原生应用程序 CAN(cloud native application)
微服务:功能1 服务1 功能2 服务2 不同的team负责不同模块的开发,一个应用环境分成六个模块开发 运行环境不同 把运行环境都打包在容器里面,一个team有一个容器,做成一个镜像去部署,彼此之间通过网络去通信 (HTTP/API)
总而言之就是把大而全的应用拆成若干个service,每个小的service自成一体。
首先看container是什么
应用程序和应用程序运行所需要的这个文件全都打包在一起就构成了容器,比如说APP1有自己的库文件,只有APP1可以调用,都是隔离的运行环境,只有容器自己内部应用程序所依赖的os 或者lib文件
**容器:**轻量化 和app紧密的集成 engine:容器的引擎 部署很简单,从开发到部署都是一条龙的服务,
和虚机比较:
比如说装数据库,要调各种各样的参数
虚机封装了整个操作系统,容器是跑在容器引擎上的,虚机是硬隔离,把物理硬件拆成了多个虚拟硬件,容器就是一套硬件,没有虚拟化,比如说红帽的系统,是软件层面上的隔离,应用程序的隔离,所以容器没有热迁移这一说,就是运行在某一个操作系统的进程,你不能把一个进程迁移到另一个操作系统上运行,容器如何dull掉了,就在别的主机上再开一个新的容器。
不像虚机是在硬件层面做隔离的,虚机如果崩了,我的系统和软件可以直接在另一个主机上重启,因为只要提供相同的虚拟硬件,它在硬件层面上是飘逸的,容器的系统和硬件是绑在一起的,容器的好处就是轻量的,改变了应用程序的开发和部署模式,更接近于应用端,更接近于开发人员,作为系统的架构来讲,去接触容器,需要一定的开发的基础。
如果容器要进企业,自动化的批量的管理,要在十台物理服务器上部署100个容器,容器如果dull掉了,容量不够了怎么办?
**容器的自动化编排:**往往被简称为k8s
K8s的架构:两个主要角色 master worker 每台管理的主机都叫worker 会在worker上起container pod:一个或者若干个共享网络的容器的集合
用户自己的电脑通过master作为api的server api收到你创建pod的请求之后会联系worker,然后去创建pod,创建容器 。
容器分发部署很方便,可以直接把app 和环境打包成image 到时候我们只要直接去下载image就可以
容器有以下特点:
●容器可以在任何容器主机上运行,其操作系统内核与容器指定的操作系统内核相同。
●正在运行的容器使用其FQDN或其唯一的IP地址进行访问。
●在共享环境中,每个容器只能访问自己的资源。
当您使用远程终端(如SSH)登录到容器时,您看不到其他容器在同一容器主机上运行的迹象。