上期鲸数小宝给大家介绍了docker,本期将继续给大家介绍容器平台。 一:容器和Docker概念介绍 容器: 容器就是从镜像创建的运行实例,即启动一个镜像就是一个容器,它可以被启动/开始/停止/删除。容器是应用进程,与普通进程不同的是,它拥有完全独立的运行空间,使各个容器相互不受影响,保证了安全的平台。它具有相互隔离、秒级启动和占用资源少的特点。 容器 Docker: docker是管理镜像和容器的容器引擎,是基于容器技术的轻量级虚拟化。能够将各种应用程序和他们所依赖的运行环境打包成标准的container/image(容器/镜像),进而发布到不同的平台上运行。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。Docker的容器就是“软件界的集装箱”,可以安装任意的软件和库文件,做任意的运行环境配置。管理容器的Docker引擎只要像码头工人一样让这个容器运行起来。Docker可以快速创建容器,大量节约开发/测试/部署的时间。引入了镜像仓库对镜像进行统一管理,私有的镜像仓库天然就是一个分发仓库,名称+tag的方式也很有利于版本管理,回滚等。使用Docker,只需小小的修改,就可以替代以往大量的更新工作,实现自动化并且高效的管理。 docker 二:容器平台介绍 容器平台是基于docker 的容器化技术,解决用户从代码自动编译打包,到线上运行维护的全套需求。开发人员使用镜像实现标准开发环境的构建,开发完成后通过封装着完整环境和应用的镜像进行迁移,测试和运维人员可以直接部署软件镜像进行测试和发布,大大简化了持续集成、测试和发布的过程。目前我们的容器平台已经实现用户公有和私有集群的容器化管理和资源智能化分配,提供全流程标准化的主机管理、应用持续集成、镜像构建、部署管理、容器运维、主机及容器监控服务。 容器平台介绍 三:Docker和VM比较 运行环境: VM:硬件平台,将整个操作系统运行在虚拟的硬件平台上,进而提供完整的运行环境供应用程序运行; Docker:宿主平台,直接在宿主平台上加载运行应用程序。 资源使用: VM:需要8-10G操作系统资源;如果用户只是运行一个简单的服务程序,这是完全不必要的; Docker:将操作系统剥离了出去,直接为用户构建了隔离空间,使用户只需要关注在应用层面,除了运行容器中的应用外,基本不需要消耗额外的系统资源,一台PC跑就可以跑上千个容器。 启动速度: VM:分钟就启动,启动时间长; Docker:秒级启动。 Docker和VM应该场景不同: VM:是对硬件资源的划分,实现对资源的完全隔离,目前更适合传统的云环境,可以比较有效的利用物理机的资源; Docker:适用于解决开发、测试、生产环境的一致化,以及在应对业务压力的快速扩容、缩减,对资源的快速调度。 docker和VM比较 四:Kubernetes Docker容器化技术已经广泛被很多公司采用,docker实现了更便捷的单机容器虚拟化的管理, docker的位置处于操作系统层与应用层之间。Kubernetes则实现了大规模,分布式, 并且确保高可用的docker集群的管理,其从单机走向集群已成为必然,而云计算的蓬勃发展正在加速这一进程。kubernetes是构建于Docker技术之上的集群管理工具,能够对跨主机之间的容器进行管理,并通过flannel技术实现跨主机之间的容器通讯。Kubernetes具有完备的集群管理能力,为容器化的应用提供可扩展的资源自动调度、多粒度的资源配额管理、部署运行、服务滚动升级、在线扩容缩容等功能,并具有强大的故障发现和自我修复能力。 KUbernetes 五:主流集群管理工具 Swarm: Swarm是原生标准Docker API,具有简单和易集成的优点但是不能处理应用实例失效,同时定制接口也很困难; Mesos: Mesos配置复杂,支持超大规模系统,扩展性高; Kubernetes: Kubernetes是谷歌开发的一款集群管理工具,也是目前业界最受认可的工具。具有支持失败冗余和可扩展性高的特点。 主流集群管理工具 六:系统构架 容器平台系统主要由以下六个部分组成: 1、项目管理: 1)关联私有Gitlab代码仓库,持续集成,根据代码项目的tag和branch自动构建。代码仓库的push操作会自动触发一次构建保证项目镜像和开发进度同步; 2)提供多种镜像构建模式,使用代码项目中的dockerfile进行镜像构建;在页面上快速配置项目的dockerfile,并在项目设置里随时修改;提供专属的Java项目构建模式实现在线编译和构建功能; 3)可以查看构建的状态、日志、构建者等全方位信息。 2、容器部署: 1)用项目镜像或第三方镜像进行部署。可以一次部署多个镜像并为每个镜像的容器设定cpu和内存占用; 2)滚动升级,每次升级会生成一个部署版本,可以随意选择一个旧版本进行回滚。部署出现异常时可以指定版本恢复; 3)运行中的部署可以随时进行扩容缩容,增减实例个数,满足业务要求; 4)负载均衡,将流量分摊、引导到服务的每个实例,提高服务的整体可用性和吞吐量; 5)查看运行中的容器的日志及在Web端模拟终端交互过程。 3、监控报警: 实时查看集群中的主机及容器中CPU、内存、磁盘等资源的使用情况 4、镜像仓库: 管理和查看项目镜像及第三方镜像 管理基础 5、集群管理: 查看集群内各个主机的配置、状态;可以随时快速添加主机;可以为主机打标签和划分生产、测试环境。 6、组管理: 针对组、项目、部署、集群分别设置独立的组或成员系统,满足不同维度的管理需求。可以根据组或成员的身份和工作界限设定资源内的权限。 系统构架 七:为什么使用容器平台 1、标准 用docker镜像和容器分别标准化业务的集成和交付环节,统一产品开发交付的工作流程标准化测试环境,环境一致。 2、智能 1)持续集成将代码集成智能化,代码Push自动构建; 2)为自动化运维提供只能呢个的状态反馈、健康监查功能; 3)智能化监控、及时了解业务和主机运行状况,发现潜在的问题。 3、快速 1)分钟级构建和部署,大大提高开发交付效率; 2)极速的升级回滚和扩容缩容,让业务让业务能够快速迭代和弹性伸缩。 |
|