当前位置:   article > 正文

容器【Docker、Kubernate】介绍以及简谈虚拟化和容器编排

kubernate

Docker

–基于go语言

Docker是一个能够把开发的应用程序部署到容器的开源引擎。

Docker的应用场景

为什么要关注Docker或者容器技术呢?容器可以提供隔离性,可以为各种测试提供一个良好的沙盒环境。并且,容器本身就是具有“标准性”的特征,非常适合为服务创建构建块。

《官方》
1、 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建运行并分享Docker容器。容器可以在开发环境中构建,然后轻松的提交到测试环境,最终 进入生产环境。

2、能够让独立服务或者应用程序在不同的环境中,得到相同的运行结果。

3、用Docker创建隔离的环境来进行测试。eg :JenkinsCI

4、Docker可以让开发者在本机上构建一个复杂的程序或者架构来进行测试,而不是一开始就在生产环境部署、测试。

5、构建一个多用户的平台及服务基础设施。

6、为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学,eg:unix shell 的使用。

7、提供软件及服务应用程序

8、高性能、超大规模的宿主机部署。

总结:

  • 开源的应用容器引擎
  • 应用-------->组件
  • 完全使用沙箱机制,相互之间不存在接口(类似于Iphone中的APP)

Docker的组件

  • 客户端和服务端
    -Docker是一个(C/S)架构的程序。Docker客户端只需向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有的工作并返回结果。Docker守护进程有时也称为Docker引擎。

  • 镜像
    -镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中“构建”部分。镜像是基于联合文件系统的一种层式的结构,由于一系列指令一步一步构建出来。

  • Registry
    -仓库,用于保存镜像。仓库分为两种共有和私有。Docker公司运营的公共仓库叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自助机的镜像。

  • 容器
    -我们刚刚提到,容器就是基于镜像启动起来的,容器中可以运行一个或者多个进程。镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段 。容器就是在镜像的基础上,加入了可写层,进行执行环境。

虚拟化概念

虚拟化技术是将物理资源转变为逻辑上可以管理的资源,以打破物理结构之间的壁垒,使计算元件运行在虚拟的基础上,而不是真实的物理资源上。

通过虚拟化技术,可以将物理资源转变为逻辑资源(虚拟机),应用程序服务运行在虚拟资源上,而不是真实的物理机上。

虚拟化层次:
1、纯软件虚拟化(安卓模拟器
2、硬件虚拟化(VMware)
3、操作系统层次虚拟化(Docker)
4、应用程序层次虚拟化(JDK中JVM)


虚拟化技术的应用场景示例

企业需求:部署一百套Nginx WEB服务,要求对外端口为80,要求独立服务器部署

  • 传统方案:采购一百台低配硬件物理机,每台物理机部署一套Nginx WEB服务
  • 虚拟化方案:采购10台高配硬件物理机,每台物理机虚拟10台虚拟机,每台虚拟机独立部署一套Nginx WEB服务

很明显,第二种方案,从成本、部署难度、维护等方面,第二种都是比第一种好的。

所以,虚拟化的意义:对于硬件设备资源的最大化利用,降低企业各种费用成本,简化后期资源部署和维护,动态满足企业需求,基于虚拟化资源来代替待淘汰的物理资源

云计算技术概念和应用场景


Docker的优势

Docker对于传统架构的优势

  1. 分布式架构
  2. 主动化运维(pg多台,自动将出问题的容器kill)
  3. 资源利用率高
  4. 快速启动

容器服务编排

Docker官方三剑客:
1、Docker Machine(管理主机本身)
2、DockerCompase(编排工具)
3、DockerSwarm 集群服务(基于go语言)

生产级容器集群平台 Kubernate(K8S)

  • 便携的:公有云、私有云、混合云、多云

  • 可扩展的:模块化、即插即用、钩子化、组合化

  • 自动修复的:自动布局、自动重启、自动副本、自动伸缩

  • Kubernetes项目是2014年由Google公司启动的,Kubernetes在Google公司15年生产环境经验基础上,结合了社区的一些优秀点子和实践而构建的。

k8s功能

(1)自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)自我修复(自愈能力)
当容器失败时,会对容器进行重启。
当所有部署的node节点有问题时,会对容器进行部署和重新调度。
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务。
(3)水平扩展
通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行大规模扩大或者规模剪裁。
(4)服务发现
用户不需使用额外的服务发现机制,就能基于kubernetes自身能力实现服务发现和负载均衡。
(5)滚动更新
可以根据应用的变化,对应用容器进行的应用,进行一次性或批量式更新。
(6)版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退。
(7)密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用设置,类似热部署。
(8)存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph等)、公共云存储服务。
(9)批处理
提供一次性任务,定时任务,满足批量数据处理和分析的场景。

Docker、Kubernate区别(珍藏):

1、

在这里插入图片描述
Docker的三大核心概念,分别是:

① 镜像 ② 容器 ③ 仓库
如果要了解以上的名词,先得听个小故事:

我有一栋房子,当我再想拥有另外一栋房子的时候,要重新雇人搭建、弄材料。当克隆技术出现后,直接克隆一份新的“镜像”文件,放在包里,用的时候直接打开便可以使用。

镜像就是刚才说的Docker镜像,背包则是 Docker仓库,房子则是 Docker容器.

2、

在这里插入图片描述
Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),它主要用于 容器编排 启动容器、自动化部署、扩展和管理容器应用和回收容器。k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署、规划、更新、维护的一种机制!

可以理解为K8s是个管家,负责每个小屋子的监控、流通和控制。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/601282
推荐阅读
相关标签
  

闽ICP备14008679号