本帖最后由 静态路由 于 2019-11-3 10:08 编辑
我是一名netops,工作两三年后发现云计算虚拟化这一块应该是未来的趋势。单纯的传统网络对于个人发展是个瓶颈,还是要会代码会虚拟化网络才能未来走得更远,希望以后能成为netdevops。公司生产环境平时网络都也比较稳定,所以自己学习的时间挺多的。 近期我在学习openvswitch,python以及docker和安全相关的知识。路还很长呢,正好论坛有活动,那就记录下学习docker的简单笔记吧 。其实最让我感触最深的就是之前安装openvas的漏扫,去年在另外个公司,我都是手动安装,时间很慢。现在接触docker后,直接run,几秒钟就搭建好了,真的是太太太方便了,只有用过才说好的。现在在看docker相关的书籍,从0开始吧。我还是个入门菜鸟,所以记录的东西还很浅显,如有不对的地方还请各位大神指点。 先记录下docker的好处和优势吧,以下内容来自《docker入门与实践》这本书,社区小伙伴对docker有兴趣的话也可以看看这本书(公司负责K8S平台的大神给我推荐的)。
1.Docker容器虚拟化的好处 Docker项目的发起人和Docker公司CTO Solomon Hykes曾认为,Docker在正确的地点、正确的时间顺了正确的趋势——如何正确地构建应用。在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的限制;同时必须是“任何时间、任何地点”可获取的。 因此,开发者需要一种新型的创建分布式应用程序的方式,快速分发和部署,这正是Docker所能够提供的最大优势。举个简单的例子,假设用户试图基于最常见组合来安装构建网站LAMP(Linux+某公司+MySQL+PHP)。按照传统的做法,首先,需要安装某公司、MySQL和PHP以及它们各自运行所依赖的环境;之分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则进行调试追踪,意味着更多的时间代价和不可控的风险。可以想象如果应用数目变多,事情会变得更加难以处理。 更为可怕的是,一旦需要服务器迁移(例如从亚马逊云迁移到其他云),往往需要对每个应用都进行重新部署和调试。这些琐碎而无趣的“体力活”,极大地降低了工作效率。究其根源,是这些应用直接运行在底层操作系统上,无法保证同一份应用在不同的环境中行为一致。而Docker提供了一种更为聪明的方式,通过容器来打包应用,解耦应用和运行平台。意味着迁移的时候,只需要在新的服务器上启动需要的容器就可以了,无论新旧服务器是否是同一类型的平台。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。 2.Docker在开发和运维中的优势 对开发和运维(DevOps)人员来说,可能最梦寐以求的效果就是一次创建或配置,之后可以在任意地方方、任意时间让应用正常运行。而Docker恰恰是可以实现这一终极目标的“瑞士军刀”。具体说来,Docker在开发和运维过程中,具有如下几个方面的优势: 更快捷的交付和部署。使用Docker,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同环境来部署代码。只要开发测试过的代码,就可以确保在生产环境无缝运行。Docker可以快速创建和删除容器,实现快速迭代,大量节约开发、测试、部署的时间。 并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。 更高效的资源利用。Docker容器的运行不需要额外的虚拟化管理程序(Virtual Machine Manager,VMM,以及Hypervisor)支持,它是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低。跟传统虚拟机方式相比,要提高一到两个数量级。 更轻松的迁移和扩展。Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。这种兼容性让用户可以在不同平台之间轻松地迁移应用。 更简单的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。并且所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。 3.Docker与虚拟机比较作为一种轻量级的虚拟化方式,Docker在运行应用上与传统的虚拟机方式相比具有显著优势:Docker容器很快,启动和停止可以在秒级实现,而传统的虚拟机方式需要数分钟。Docker容器对系统资源需求很少,一台主机上可以同时运行数千个Docker容器(在IBM服务器上已经实现了同时运行10K量级的容器实例)。 Docker通过类似Git设计理念的操作来方便用户获取、分发和更新应用镜像,存储复用,增量更新。Docker通过Dockerfile支持灵活的自动化创建和部署机制,提高工作效率,使流程标准化。Docker容器除了运行其中应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行N个不同的应用就要起N个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而Docker只需要启动N个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。 当然,在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着Docker就不安全,Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,并且可以整合众多安全工具。从1.3.0版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大提高了使用Docker的安全性。在已知的大规模应用中,目前尚未出现值得担忧的安全隐患。 明天继续~。 |