网络工程师眼中的docker

好多年前,“云计算”这个名词刚出现的时候,好多概念还真是“云里雾里”、“虚无缥缈”,好多时候,大家把“云计算”等同于“网格计算”、“分布式计算”。似乎那个时候更注重是“计算”两字,或者可以说那个时候大家对云的理解还不够透彻,不知道“云”到底是啥玩意。又过了几年,“云计算”的概念清晰了许多,好多人认为“虚拟化”就是云计算,搞个workstation virtual box就开始玩“云计算”了。不过,那时候也挺好玩,当虚机能够被实时“漂移”走的时候,我们遐想到了很多。。。也这是这个时候,IaaS、PaaS、SaaS的概念被提出来,“云计算”的关注点也更专注于“云”上面了。而且“云”的概念也越来越具体化、形象化,如同水、电、煤,按需使用、按需付费。

好玩的事情来了,那时候的网络工程师(运维工程师),对自己管辖范围内的设备似乎更熟悉。网络工程师管好一摊交换机、路由器、安全、LB等等,存储工程师管好存储主机、磁盘柜等等,系统工程师管好服务器、OS等等。而云计算的概念逐渐将这些“网络”、“存储”、“计算”都变成了“资源池化”。顾名思义,以前管服务器的小伙伴看到的是机房里的好多闪着绿灯的运行着的服务器,里面看得见、摸得着的每颗CPU、内存条、硬盘、RAID卡、PCIE等等。云环境里,这个小伙伴看到的不再是一颗一颗CPU,他看到的是整体“计算资源池”能够提供多大的计算资源、多强的计算能力,业务似乎更具体化了,运维能够更契合业务了。

再多啰嗦几句,VM是什么?下面的图可以看到,VM是寄宿在裸金属或者宿主机上的一个系统。由hypervisor(VMM)借助硬件辅助虚拟化的能力为上层OS提供运行环境、文件存储。而很明显,对于开发者而言,这已经是进了一大步了,为什么?以前资源利用率低,一台服务器只能有一个OS,眼睁睁看着内存、CPU资源浪费掉。如今hypervisor把海量内存统统池化后,统一给上层OS提供服务。那么问题又来了, 人就是这么懒惰,对应开发者而言,有了OS的确帮助他们方便了很多。镜像模板一倒,一个OS就能跑了,但编译环境呢?每次做开发都需要对应调运行环境,而JAVA/PHP等等编译环境、参数又各不相同,每次又需要重新调整。

Docker是什么?

这时候docker就来了,docker是什么?docker是基于GO实现的云开源项目,诞生在2013年初。最初的由dotCloud公司发起,而后来dotCloud公司也正是改名为Docker公司。Docker目前已加入Linux基金会,遵循Apache2.0协议,全部开源,可以说2014年docker火了一把,而如果说docker是PaaS平台的宠儿的话,那另一个IaaS的宠儿必然是OpenStack了。下面引用Wiki上对docker的解释:

Docker是一个开放源代码软件专案,在软件容器下自动布署应用程序,借此在Linux操作系统上,提供了一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux内核中的资源分离机制,例如cgroups,以及Linux内核名称空间,来建立独立的软件容器(containers)。这可以在单一Linux实体下运作,避免启动一个虚拟机器造成的额外负担。docker最初版本发布于2013.3.13日,提供操作系统层面的虚拟化。

下面来看一下逻辑图,对比着可以发现,docker已经不再是多OS的运行环境了,他提供了单个OS中的多“编译环境”,把这时髦的词叫做“容器”。虚拟化的层次更进了一步,由多OS变成了多容器。想必云服务提供商们已经在做如何将“卖虚机”的服务转变成“卖容器”的服务了吧。言归正传,这是真正意义上的PaaS。

纵观当今主流的Linux版本,RHEL、CentOS、Ubuntu都已经在最新版本里面提供了docker的软件支持包。

接下来要好好谈一下docker的容器技术,何为docker容器?其实就是Linux容器(LXC,Linux Containers),而docker容器在LXC的基础上,对容器管理进行了优化,包括:分发、版本控制、移植等等,让使用者无需关注底层。而不同docker容器就类似一个沙箱,默认情况下彼此隔离,也可以建立通信机制。而正是这种容器级的虚拟化,在高效的Linux下,一个OS可以运行上千个docker容器,相比于OS级的几十个VM,整体资源利用率又更上了一个台阶。

而我们如果对比docker的容器和VMM的hypervisor,可以看到:

(1)容器间类似每个沙箱,彼此互相隔离。VM则是每个OS彼此隔离。

(2)系统损耗,docker利用率高于hypervisor,因为容器在OS层面的损耗少于VM中每个guest OS

(3)文件系统:VMM是有自己的文件系统基于OS级,docker文件系统基于容器级

Docker三大核心概念介绍:

镜像——类似于虚拟机镜像,用于存放docker引擎的文件系统,一个镜像内部可以拥有一个完整的系统环境,当然,镜像也可以包含已经安装部署了的应用程式。

容器——docker容器是一个沙箱技术,沙箱彼此默认隔离应用。容器是镜像运行的基础,可以对容器进行的操作有:启动、开始、停止、删除。对应到VMM的话就是每一个虚机。

仓库——用于存放镜像文件的仓库,可以分为私有仓库和公有仓库(公网可取)。每个仓库可以放很多的镜像文件,通过开放下载的方式加载,当然,用户也可以将自己使用的镜像文件上传至仓库。

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。同VM的方式不同, LXC 其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化要docker要解决的问题出发,看看他是怎么满足用户虚拟化需求的。

用户需要考虑虚拟化方法,尤其是硬件虚拟化方法,需要借助其解决的主要是以下4个问题:

隔离性 - 每个用户实例之间相互隔离, 互不影响。 硬件虚拟化方法给出的方法是VM, LXC给出的方法是container,更细一点是kernel namespace

可配额/可度量 - 每个用户实例可以按需提供其计算资源,所使用的资源可以被计量。硬件虚拟化方法因为虚拟了CPU, memory可以方便实现, LXC则主要是利用cgroups来控制资源

移动性 - 用户的实例可以很方便地复制、移动和重建。硬件虚拟化方法提供snapshot和image来实现,docker(主要)利用AUFS实现

安全性 - 这个话题比较大,这里强调是host主机的角度尽量保护container。硬件虚拟化的方法因为虚拟化的水平比较高,用户进程都是在KVM等虚拟机容器中翻译运行的, 然而对于LXC, 用户的进程是lxc-start进程的子进程, 只是在Kernel的namespace中隔离的, 因此需要一些kernel的patch来保证用户的运行环境不会受到来自host主机的恶意入侵, dotcloud(主要是)利用kernel grsec patch解决的.

Docker应用场景

(1)当对资源利用率高,颗粒度更细的场景。可以有效利用沙箱的隔离技术,提供数以百计的虚拟运行环境。

(2)细化数据存储和数据库处理,当两者分属于两个容器时,对数据库的升级时,只需要使用新的容器替换掉目前的数据存储就可以完成。

(3)把Docker当测试环境,容器的方式便于管理、开启、替换、删除

(4)多租户隔离,利用docker的沙箱隔离机制,此时的租户可以是一个“服务用户”,也可以是一个需要隔离的“APP”

(5)服务快速部署,因为是容器级的虚拟化,所有配置的部署比系统级虚拟化更快速更优效率

附Docker推荐的应用场景:

Docker主站

https://www.docker.io/

国内Dockerpool

http://dockerpool.com/

在线《Docker —— 从入门到实践》

http://dockerpool.com/static/books/docker_practice/index.html



时间: 2024-10-27 13:08:10

网络工程师眼中的docker的相关文章

软考网络工程师复习备考策略

软考网络工程师,是软考中级科目考试里面较为简单的一门科目,并且对个人专业技术提升非常有帮助.大家可以免费学习一下,徐老师在51上的最新免费备考视频.1小时学会如何高效备战软考网络工程师视频课程有技术方面的问题都可随时在课后留言.

备战2017软考网络工程师终极解密学习

本套餐学习地址 http://edu.51cto.com/pack/view/id-967.html 本套餐可获得徐朋老师考前冲刺押题串讲[直播QQ群418431085]本套餐包括视频课和直播课两大部分,1.视频课包括软考网络工程师基础知识.案例分析解析和19套网工分类强化视频.2.直播课包括四次网工选择题.案例分析题重点.难点.易考点押题冲刺.购买本套餐,专项老师一对一答疑及独家资料赠送!祝大家考试顺利.

高级网络工程师 系统工程师

网络工程师职责,定员定岗 1 负责IDC机房托管的网络设备,服务器等资源的运维(故障排查:维修:更换)2 负责公司,机房之间网络正常运行,日常的网络监控,网络调整,维护,紧急的故障处理3 负责业务变更设计网络时,给出合理规划和设计4 负责公司数据中心网络架构设计,建设,运维,网络设备规划,设备的配置变更,合理引入新的技术,保证业务系统平稳7*24运行5 负责对项目,工作内容进行文档编写,方案指定,组织协调网络异常的事件处理,沟通汇报事件进展,负责问题跟踪6 配合应用等部门提供网络技术支持,对出现

西安谁知道哪里有思科CCIE网络工程师

[西安思科CCIE网络工程师] 西安CCIE网路工程师很多人选择了一米网络工程师实验室,因为我们可以让你学习大量的真实网络工程案例. 介绍西安思科CCIE网络工程师之前,先给你讲个好玩的.我对爸爸说:"你要是当年努力点,吃点苦受点累,我现在就是富二代了,每天享受就行,都怪你."他想想:"你说的对,那这样吧,你从现在开始吃苦受累,以后你儿子就是富二代了,光享受生活就行,好不?"我急了:"凭啥?!我吃苦受累,让那小崽子享受?!""嗯,我也是

网络工程师成长之路之怎样去工作

网络工程师成长之路之工作的事 入职之后,你的直接领导对你特别的重要.一个网络工程师的工作状态全靠领导,有一个好的领导,可以给你在迷茫中指出一条路.所以多和领导沟通交流,不管是工作上的还是生活上的事.所谓知人善用,领导不了解你怎么能让你的工作的内容与你的能力相当,怎样给你分陪的工作不仅能展示出你的能力,而且还具有挑战性,还能有利于你的成长. 工作之后你会发现做网络的这个圈子其实并不大,也就那些厂家,一个地方做的好的也就那几个公司.一个大的集成项目分为网络部分和安全部分及服务器.你仔细想想网络设备也

华为HCNA网络工程师【从入门到精通】自学视频

课程目标:培养实战型网络工程师适合人群:初级华为网络工程师.网管.在校大学生以及零基础学员和准备考取华为HCNA/华为HCNP的技术人员.课程介绍:本课程涉及计算机网络基础知识.企业网常用技术介绍.华为路由器和华为交换机配置以及网络运维和系统集成常用知识,常用工具介绍.华为模拟器介绍.华为资料和手册.本课程详细讲解大中型企业网络组建.华为网络设备调试.数据包结构.OSI模型.TCP/IP模型.IP编址.IP子网划分.TCP.UDP.ICMP.H3C命令行简介.STP.MSTP.VLAN.Trun

华为HCNP网络工程师【从入门到精通】

课程目标:帮助学员获取中大型企业网搭建.维护.集成项目的知识,同时通过华为HCNP考试,并获取HCNP证书适合人群:初级网络工程师.网管.在校大学生.准备参加华为HCNP考试的人课程介绍:本课程涉及计算机网络基础知识.企业网常用技术介绍.华为路由器和华为交换机配置以及网络运维和系统集成常用知识,常用工具介绍.华为模拟器介绍.华为HCNP资料和手册.课程包含企业级WLAN和Linux 简介. 更多内容详见:华为HCNP网络工程师[从入门到精通]自学视频[肖哥]http://www.kokojia.

记2016年上半年软考网络工程师考试

本科学的不是计算机,却对计算机技术情有独钟.第一份工作做的不是IT,却对成为一名IT人员心心念念.本科期间抽空考了全国计算机等级考三级网络,毕业后2年就没有再接触过计算机相关的考试. 随着自己职业规划的一点点实现,我决定在今年实现突破.首先在3月份参加了全国计算机等级考四级网络工程师,又同时报名了软考的中级网络工程师,而考全国四级还有个想法是想为软考热个身.然后在思考着要不要报个软考的培训班,毕竟网络工程师的考试通过率还是挺低的,自己平时工作也接触不到这方面的内容. 一个偶然的机会,我发现了51

2016上半年网络工程师考试上午真题(27-50)

2016年上半年网络工程师考试真题是备战下半年网络工程师考试的最佳资料,下面希赛软考学院为您整理了上午试题,供您参考学习. 2016年上半年网络工程师考试上午真题(27-50) ●采用DHCP动态分配IP地址,如果某主机开机后没有得到DHCP服务器的响应,则该主机获取的IP地址属于网络(27). A.192.168.1.0/24 B.172.16.0.0/24 C.202.117.00/16 D.169.254.0.0/16 ●某网络拓扑结构如下图所示. 在路由器R2上采用命令(28)得到如下图