您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > Docker+kubernetes技术资料ppt版本
Docker&kubernetes210max主要内容Docker介绍及原理Docker操作Docker三剑客扩展-swarmkubernetes介绍及原理第一部分Docker介绍及原理Docker•Docker基于容器技术的轻量级虚拟化解决方案•Docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进行封装抽象(后面会介绍此两种技术),为用户提供了创建和管理容器的便捷界面(包括命令行和API)•Docker是一个开源项目,诞生于2013年初,基于Google公司推出的Go语言实现•微软,红帽Linux,IBM,Oracle等主流IT厂商已经在自己的产品里增加对Docker的支持。•Google每周启动超过20亿个容器进行业务服务,于上个世纪90年代已经开始大规模使用容器技术210maxvm现有问题1、资源利用效率低2、单物理机多应用无法有效隔离(进程空间,cpu资源,磁盘)3、运维部署不便4、测试、版本管理复杂5、迁移成本高6、传统虚拟机,空间占用大,启动慢,管理复杂210maxDocker--轻量级虚拟化容器技术1、秒级启动,秒级停止,空间资源占用极少(几M)2、实现进程级别的隔离3、可在普通服务器上建立上百个docker实例4、加快开发测试部署的速度5、简化版本管理210maxDocker的生态圈OfficialRepos&14K+DockerizedAppsCommunity460+Contributors250+MeetupsonDocker2.75MDownloads6.7KProjectsonGitHubSupportEnterpriseSupportRobustDocumentationImplementation,Integration,TrainingNetworkofPartnersTheDockerPlatformDockerEngineDockerHubBuild,Ship,andRunPartnersContentUsers210max认识Docker•Namespaces(IBM)•Cgroups(Google)•LXCtools•TheLinuxKernel•Git•SELinux(RedHat)•SolarisZones•BSDJails•+++Docker如何和Linux内核打交道?•Docker平台工具、守护进程•Image镜像,包括应用及系统的只读数据包•Container容器,虚拟机的运行实例•Registry仓库登记,管理镜像文件•DockerhubDocker官方公有仓库Docker专业术语210maxDockerVSVM210maxDocker容器本质上是宿主机上的进程。docker通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过写时拷⻉机制(copy-on-write)实现了⾼效的⽂件操作。1、namespace资源隔离想要实现⼀个资源隔离的容器,在分布式的环境下进⾏通信和定位,容器必然要有独⽴的IP、端⼝、路由等,⾃然就联想到了⽹络的隔离。同时,容器还需要⼀个独⽴的主机名以便在⽹络中标识⾃⼰。有了⽹络,⾃然离不开通信,也就想到了进程间通信需要隔离。开发者可能也已经想到了权限的问题,对⽤户和⽤户组的隔离就实现了⽤户权限的隔离。最后,运⾏在容器中的应⽤需要有进程号(PID),⾃然也需要与宿主机中的PID进⾏隔离。Docker的原理210maxDocker的原理•pid-进程•net-网络•ipc-消息•mnt-文件系统•uts-分时•user-用户Namespace资源隔离LinuxKernelPID也是可以被虚拟的。命名空间建立系统的不同视图,对于每一个命名空间,从用户看起来,应该像一台单独的Linux计算机一样,有自己的init进程(PID为1),其他进程的PID依次递增,A和B空间都有PID为1的init进程,子容器的进程映射到父容器的进程上,父容器可以知道每一个子容器的运行状态,而子容器与子容器之间是隔离210maxDocker的原理-docker总览如图创建一个docker容器,通过imagemanagent的distribution和registry模块拉取镜像,通过镜像管理里面的image、reference和layer存储镜像的元数据;镜像存储驱动graphdriver将镜像存储在文件系统、编辑或维护docker工作目录镜像层,最终对镜像的元数据的增删改查,屏蔽不同层调用的影响;docker容器创建网络,通过network模块调用libnetwork创建配置网络,libnetwork可以抽象出容器网络核心模型:沙盒、端点、网络,五种内置驱动bridge、host、none、remote和overlay;创建volume数据卷需调用volumedriver,实现数据卷并挂载,进行卷的增、删、改、查;当限制容器资源或执行命令,execdriver通过libcontainer是对cgroup和namespace的二次封装并进行容器管理,具体就是上图6个namespace隔离和cgroup的资源限制;dockerdaemon是服务端用来响应dockerclient的请求。210maxDocker三大核心210maxDocker的原理cgroups资源限制强⼤的内核⼯具--cgroups。它可以限制被namespace隔离起来的资源,还可以资源设置权重、计算使⽤量、操控任务(进程或线程)启停等。210maxDocker的原理什么是Docker镜像:镜像是⼀个只读的Docker容器模板,含有启动的所需文件系统结构和内容,镜像是docker容器的基础,这些文件内容组成静态的文件系统,即运行环境rootfs。rootfs是docker启动内部进程可见的文件系统,含有目录,配置文件及其工具。linlinux启动先挂载一个只读的rootfs,系统检验完整性后切换为读写模式,docker也是先挂载rootfs,再利用联合挂载技术,在只读层rootfs上挂载一个读写层,这样读写层就在容器的最顶层,下面联合挂载可能有多个只读层210maxDocker的原理210maxdocker架构图容器Container镜像images仓库RepositoriesdockerHub(publicregistry)Docker-registry(privateregistry)210max第二部分Docker基本操作从官网拉取image使用dockerfile创建一个image运行容器、exec进入容器link连接容器,挂在卷docker四种网络模型DockerMachineDockerComposeDockerSwarmdocker管理三剑客介绍210maxdocker-machinedocker-machine是解决docker运行环境问题。docker技术是基于Linux内核的cgroup技术实现的,那么问题来了,如果在非Linux平台上使用docker技术需要依赖安装Linux系统的虚拟机。docker-machine就是docker公司官方提出的,用于在各种平台上快速创建具有docker服务的虚拟机的技术。你可以把它理解为virtualbox或者vmware,最开始在win7上用得比较多,但是win10开始自带了hyper-v虚拟机,已经不再需要docker-machine了,docker可以直接运行在安装了Linux系统得hyper-v上。210maxdocker-machineDockerMachine的目的是简化Docker的安装和远程管理,它有自己的命令行工具:docker-machine。210maxdocker-composeCompose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。210maxdocker-compose为什么要用docker-compose,他解决了什么?用通俗的语言来说,我们平时操作docker一系列动作,你手动使用docker的动作可以拆分成:找系统镜像//dockersearch、在vm中安装镜像//、dockerrun-d-it运行你的镜像、需要执行每条命令,如果做更多的docker操作,这显然是非常没有效率的。但是在docker-compose.file里面就很好了。你只需要写好后模板文件,只运行一句docker-composeup-d一组容器就会启动。一切都是那么的简单--没有例子210maxDocker三剑客之一SwarmSwarm是Docker原生的集群管理软件,与Kubernetes比起来比较简单。Swarm这个项目名称特别贴切。在Wiki的解释中,Swarmbehavior是指动物的群集行为。比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarmbehavior。210maxDocker一SwarmDocker的Swarm(集群)模式,集成很多工具和特性,比如:跨主机上快速部署服务,服务的快速扩展,集群的管理整合到docker引擎,这意味着可不可以不使用第三方管理工具。分散设计,声明式的服务模型,可扩展,状态协调处理,多主机网络,分布式的服务发现,负载均衡,滚动更新,安全(通信的加密)等等Swarm特点1)对外以DockerAPI接口呈现,这样带来的好处是,如果现有系统使用DockerEngine,则可以平滑将DockerEngine切到Swarm上,无需改动现有系统。2)Swarm对用户来说,之前使用Docker的经验可以继承过来。非常容易上手,学习成本和二次开发成本都比较低。同时Swarm本身专注于Docker集群管理,非常轻量,占用资源也非常少。简单说,就是插件化机制,Swarm中的各个模块都抽象出了API,可以根据自己一些特点进行定制实现。3)Swarm自身对Docker命令参数支持的比较完善,Swarm目前与Docker是同步发布的。Docker的新功能,都会第一时间在Swarm中体现。210maxDocker一SwarmSwarm架构,Swarm作为一个管理Docker集群的工具,首先需要将其部署起来,可以单独将Swarm部署于一个节点。另外,自然需要一个Docker集群,集群上每一个节点均安装有Docker。210maxDocker一SwarmSwarm调度策略Swarm在scheduler节点(leader节点)运行容器的时候,会根据指定的策略来计算最适合运行容器的节点,目前支持的策略有:spread,binpack,random.1)Random顾名思义,就是随机选择一个Node来运行容器,一般用作调试用,spread和binpack策略会根据各个节点可用的CPU,RAM以及正在运行的容器数量来计算应该运行容器的节点。2)Spread在同等条件下,Spread策略会选择运行容器最少的那台节点来运行新的容器,binpack策略会选择运行容器最集中的那台机器来运行新的节点。使用Spread策略会使得容器会均衡的分布在集群中的各个节点上运行,一旦一个节点挂掉了只会损失少部分的容器。3)BinpackBinpack策略最大化的避免容器碎片化,就是说binpack策略尽可能的把还未使用的节点留给需要更大空间的容器运行,尽可能的把容器运行在一个节点上面210maxDocker一SwarmSwarmCluster模式的特性1)批量创建服务建立容器之前先创建一个overlay的网络(overlay在物理网络之上构建虚拟网络,上层应用只与虚拟网络有关。),用来保证在不同主机上的容器网络互通的网络模式2)强大的集群的容错性当容器副本中的其中某一个或某几个节点宕机后,cluster会根据自己的服务注册发现机制,以及之前设定的值--replicasn,在集群中剩余的空闲节点上,重新拉起
本文标题:Docker+kubernetes技术资料ppt版本
链接地址:https://www.777doc.com/doc-3255725 .html