人们在经历了很多痛苦之后,才相信“缘分”的存在。而一切“缘分”,都只是事物发展的必然结果。前言在生产环境配置越来越复杂的今天,一个统一、可移植的环境可能是很多从业者的梦想。所谓“需求引领市场”,在需求的驱动下,解决方案的诞生只是时间问题。开发测试环境搭建、换电脑、写文档、适配都比较辛苦。所有程序代码的执行取决于具体的系统环境。因此,在项目开发之初,搭建相应的开发环境是必不可少的一步。任何不基于环境的代码开发都是耍流氓。如果从一开始就跟着项目走,那还好,至少环境在逐渐改善。但是中间加入的话,遇到复杂的项目就别提了。如果你说太多,你会哭。只需要一个环境营造,就可以让你腰酸腿抽筋。个人经历:项目完成过半时,我被借调去支持其他项目,大约持续了三个月。回来后的情况可以用一句话来概括——一次操作猛如虎,结果两百零五!什么?!登入?你什么时候加的?PG库,怎么……配!匹配!匹配!当项目终于可以正常运行的时候,脑子里只有一个念头:项目未三月,一见面就不认识了!哎,听说最近有个新技术挺火的……请问你受得住这个诱惑吗?我只是相信没有不喜欢“偷”的程序员。又到了环境搭建的时候了,左手npm,右手brew,还能做什么?“偷”的那种成就感,简直是翻天覆地!等等,骚年别急着激动!让我问你两个问题:-1.你的主机安装了多少包?-2.有同事想和你合作开发,你如何给他创造一个和你一模一样的环境?哎,我的宿主里面有各种套餐和服务,具体数量我也数不清了(一副板着脸的样子)!至于协同开发,这并不容易。我写了一个文档,只要按照文档一步一步来,我就可以保证可以配置!或者,我配置虚拟机,谁需要开发环境,我只要给他拷贝一个虚拟机镜像就完事了。嗯,我不怀疑你总是及时更新文档的毅力,也不怀疑一些公司的电脑配置。运行虚拟机后,除了freeze,我不知道还能做什么。。。只想问你:你不觉得你宿主机现在的状态有点像“大杂烩”吗?程序员的井然有序呢?有了组织,我们至少可以做斑马(移动代码),没有组织,只能是一团糟!运维管理繁琐易错启动不一致效率低作为运维人员,听到最多的一句话是什么?对我来说,绝对是“我没问题,你怎么不行?”说得最多的一句话是什么?我想这可能是同一句话。解决部署问题花了很多心血和加班。还没来得及喘口气,一个新的补丁包就发来了。是的,我要努力!很多运维人员的真实写照大概是:要么在调环境,要么在调环境的路上。出路由于种种原因,我们常常把脑力劳动变成体力劳动。喜悦感和成就感不说,还有黑眼圈和“地中海”。到那时,我们或许会感慨:“CV大法”更好!古语云:穷则变,变则成。人,只有被逼到一定的地步,才会去思考改变,去寻找出路。舒适的环境基本不可能滋养“思变”的野心和欲望。眼看着体力跟不上,头顶的光芒也越来越刺眼,他知道是时候求变了。那么有没有“一次配置,终身受益”的解决方案呢?首先,虚拟机是最容易想到也是接触最多的非虚拟机。虚拟机(virtualmachine)是一种带有环境安装的解决方案。它可以在一个操作系统中运行另一个操作系统,比如在Windows系统中运行Linux系统。应用程序并不知道这一点,因为虚拟机看起来和真实系统一模一样,但是对于底层系统来说,虚拟机只是一个普通的文件,不需要的时候可以删除,没有任何作用在其他部分。虽然用户可以通过虚拟机来恢复软件的原始环境。然而,这个方案有几个缺点。(1)资源占用许多虚拟机独占了部分内存和硬盘空间。当它运行时,其他程序不能使用这些资源。即使虚拟机中的应用程序实际只使用了1MB的内存,虚拟机仍然需要数百MB的内存才能运行。(2)冗余步骤多虚拟机是完整的操作系统,有些系统级的操作步骤是不能跳过的,比如用户登录。(3)启动慢启动操作系统需要多长时间,启动虚拟机需要多长时间。应用程序实际运行可能需要几分钟时间。既然虚拟机有这么多缺点,有没有更好的解决方案呢?真的有,那就是Docker技术。我和Docker的故事,是从一个念头开始的……就是因为这样一个念头,我第一次认识了Docker,迷迷糊糊中走进了Docker的世界。什么是码头工人?Docker是一个开源的应用容器引擎,它允许开发者将他们的应用和依赖包打包成一个可移植的镜像,然后发布到任何流行的Linux或Windows机器上,它还可以被虚拟化。容器完全使用沙箱机制,它们之间不会有任何接口。总结一下:Docker是一个开源的软件部署解决方案;Docker也是一个轻量级的应用容器框架;Docker可以打包、发布和运行任何应用程序。Docker的组成一个完整的Docker由以下几个部分组成:DockerClient客户端DockerDaemon守护进程DockerImage镜像DockerContainer容器Docker的作用目前Docker主要有3种用途。(1)提供一次性环境。比如在本地测试别人的软件时,为持续集成时的单元测试和构建提供环境。(2)提供弹性云服务。因为Docker容器可以随时打开和关闭,所以非常适合动态扩缩容。(3)构建微服务架构。通过多个容器,一台机器可以跑多个服务,所以可以在本地模拟微服务架构。综上所述,以上就是我“熟悉”Docker的过程以及我对Docker的简单理解。欢迎大家分享认识Docker的过程。~~本文到此结束,感谢阅读!~学习有趣的知识,认识有趣的朋友,塑造有趣的灵魂!大家好,我是〖编程三昧〗的作者王隐,我的公众号是《编程三昧》,欢迎关注,希望大家多多指教!你来,怀揣期待,我以墨香迎接你!您归来,不分得失,只送回味!知识与技能并重,内功与外功并重,理论与实践两手抓,两手都要用力!
