首页

文章

入门运维为什么要学Docker

发布网友 发布时间:2022-03-26 10:01

我来回答

2个回答

热心网友 时间:2022-03-26 11:30

运维自动化的关键在于标准化。当你有一个成熟的团队,有标准化的流程,那么运维自动化就水到渠成了。而如果你什么都没有,那就需要先设定优先级。
我们的目标当然是将所有的流程标准化,而哪些要放在前面做?做起来比较简单的,和比较重要的。我认为构建和测试的流程是最基本的第一步。这对于交付产品的公司来说容易一些,对互联网公司来说更复杂一些,而测试比构建也要复杂一些,但这是基础。构建和测试的流程标准化做好了,就可以准备做自动化的工作了。
不过我见过的很多公司连Git都还没有,仍然在用最原始的FTP push来更新代码。我的观点是,如果你还没有用上Git这样的工具,那根本就不用考虑什么自动化的问题,因为条件完全不成熟。
所以,我们假设你的团队能够很好的使用Git,然后你建立了构建和测试的标准化流程,然后你就可以用工具来实现自动化。这可能是Jenkins这样的工具,不过Jenkins比较复杂,如果你只是一个很简单的网站,那么自己写一些脚本来实现自动化是更合适的。
到此为止,我们说的还不是自动化运维,而是自动化工具链。工具链就是开发工具链,从IDE,到代码提交,代码审查,构建,到测试,仍然属于开发的范畴。在这之后才是运维的范畴,就是往生产环节部署。
部署
运维自动化最关键的部分是运行环境的定义。我们的目标是让各个阶段的代码完全一样,即开发者在自己笔记本上写的代码,到集成阶段的代码,到线上环境的代码,都是一致的。为什么Docker这么火,就是因为它帮助开发者很简单的就让自己的开发环境跟生产环境一致。环境的标准化,意味着目录、路径、配置文件、储存用户名密码的方式、访问权限、域名等种种细节的一致和差异处理的标准化。这涉及到很多方面,也是自动化运维最困难的一部分。
这里要注意的是,像Puppet这样的工具并不是魔法。你需要自己为你的环境定义一套描述的方式,工具是无法为你完成这项工作的。无论是Puppet还是Jenkins,都是根据你的定义来管理你的环境。你决定用户名和密码如何储存,你决定配置文件的路径。开发者很喜欢把各种配置和url之类的参数硬编码到代码里,这很快;他们还喜欢东搞西搞的用一些乱七八糟的手段让软件通过测试,但是如果要构建一个真正的系统,这些小把戏根本没用。你必须强迫他们采用标准的方式写代码,比如强制他们把用户名和密码写在固定的地方,然后你才能跟Puppet说,配置文件在这里,测试环境用这个配置,生产环节用那个配置。到这里就很简单了。
线上环境问题排查
对于线上环境的问题发现与解决,大部分基础的问题都能用工具来自动发现并提醒,比如磁盘空间不够,比如MySQL崩溃,比如访问网站的时候出现错误页面等等,有很多现成的工具可以抓到它们错误的信息。
比较困难的是排查网站为什么变慢这样的性能问题。我们经常看到客户的开发团队提交新代码后引入问题。在测试做得不好的时候这很常见,事实上很多东西是很难测试的,尤其是性能;而互联网公司又尤其没有测试的文化,互联网开发人员大多关注特性的实现,而不像传统企业级开发那样有很多测试的工具和流程。
理想的情况下,每个人提交代码前都应该测试。但既然反正也没人这样做,那么用工具来帮忙还是很有用的。比如New Relic这样的工具就很强大,它可以发现代码层面的问题。我们有时候也用我们的工具帮客户做测试,包括负载测试。性能测试是挺困难的一件事,既不容易用起来,也不容易让别人用起来,一般来说你需要一个专门的团队才能做性能测试,但互联网公司基本没有(除了Google、*这样的),就算想有也找不到人。所以要善用工具。
Docker的意义
Docker很有意思,很火,很新,当然也很多问题。它目前没多少大型部署案例,所以人们不断的发现问题也是很正常的事情。
总体来说,Docker是一个对开发者非常友好的东西:简单的实现不同机器上的环境标准化,可以轻松拿来拿去,而且在不同的云平台上都支持。而把Docker用起来对运维而言则是很大的挑战,我们帮一个客户做一个规模较大的Docker部署,一个有经验的DevOps团队也花费了几个月的时间。为什么?
Docker容器就跟VM差不多,从运维的角度,会希望像管理VM那样管理Docker容器,但是Docker容器很难troubleshooting,因为默认来说它没有SSH,你要怎么登陆到一个容器里去查看里面发生了什么问题?Troubleshooting,这是一个最大的问题。
默认来说,Docker容器也无法运行cron任务或者batch任务,意味着你没法儿让它自动做备份之类的工作,而这是最基本的运维任务,这是另一个必须解决的问题,否则你根本无法构建一个自动化管理的云环境,而要解决这个问题,你需要搞一些手段,比如改造它的架构,但是你一折腾,又引入了很多新的问题要解决。
Docker有很好的网络机制,但是也很复杂,所以我们bypass了所有的Docker网络,而这也引入了一些问题。Docker容器也没有好的重启方法,因为你很难看到哪个是哪个,需要做一些好的命名映射的管理系统。总之,要在大型部署中把Docker玩好,你需要各个方面的专家,还需要时间。
我并不怀疑Docker是趋势,它的概念非常好,会极大的改善开发者的世界。如果你的系统比较简单,不是很大,那么用Docker是完全没问题的。而且它的文档很好,这也是很赞的地方。我相信它会引领未来。它只是还需要时间来完善。而这也不奇怪:想想KVM,其实KVM做的事情很简单,就关注系统层和CPU、内存、存储、网络的交互,并不难理解,但即使是目标如此简单的项目也多年处于问题层出不穷的状态,人们不断的围绕它开发工具,改进它,才到了今天的可用状态。Docker则复杂的多,有很多层:它是一个环境管理系统,它是个打包系统,它是个文件系统,它包含一套网络机制,它是一个repo系统,它是个代码系统,等等。基本上,Docker想要把所有的东西都扔到一个小盒子里,五脏俱全。当你用Docker提交代码时,你做的事情跟以前是完全不同的。在以前我们只是把代码提交上去,而在Docker中我们把整台计算机(虚拟机)提交上去。想象一下,这就好像是交换电脑一样,开发者把整台电脑交给运维,电脑里面的环境和代码都有了,是不变的;而运维需要把所有的电源网线什么的都插回去,需要处理很多变化的东西,比如变更的IP、用户名、文件系统等等。这是全新的方式。

热心网友 时间:2022-03-26 12:48

免部署!!复制使用!!同样会牺牲计算机性能,当然这部分性能不会太多!
贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 用Docker之后还需要OpenStack吗 docker有哪些有趣的用途? docker对运维的作用 什么是docker docker容器对开发人员来说有什么好处 Docker 有什么优势 docker的好处,为什么使用docker来部署服务器 Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些 docker技术有什么用? Docker是什么? docker是干什么的? 华为手机云备份有必要吗 华为手机一定要升级云储空间吗? 关闭华为手机云空间对使用有什么影响 华为手机云备份是需要开启吗 华为手机云备份是需要开启吗? 华为的这个云存储空间有用吗?不用行吗 计算机的软件系统包括哪些内容? 计算机软件系统是由哪两部分组成 计算机的软件系统包括什么和应用软件? docker和虚拟机的区别 知乎 如果决定使用Docker,是否有必要同时使用OpenStack Docker的主要作用是什么? 虚拟机与Docker有何不同 软件系统的主要功能 简述计算机软件系统的分类及其功能 系统软件的功能之一是什么 计算机软件系统的组成和功能 计算机软件系统的组成和功能? 局域网的硬件系统和软件系统实现什么功能 软件的作用是什么 一个软件系统通常包括哪几个部分,它们的作用是什么? crm管理软件系统有哪些功能呢? 计算机系统软件与作用有哪些 APP系统软件功能有哪些? 微信群退出后原来发在群里的消息会保畄吗? 群里报账合伙人退群信息还有吗 qq群退群后之前发的消息还在吗 怎样查找美团上的账单 华为mate30pro 怎么设置微信和扣扣的密码锁?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com