关于javascript:Docker-系列-01-一念缘起

人们只有在经验过诸多苦楚之后,才会置信这“缘分”的存在。
而所有的“缘分”,只不过是事物倒退的必然结果罢了。

前言

在生产环境配置日益简单的明天,一套对立的、可移植的环境可能是很多从业人员梦寐以求的。所谓“需要引领市场”,在需要的催动下,解决方案的诞生也只是工夫问题而已。

开发测试的苦

    1. 搭环境
    1. 换电脑
    1. 写文档
    1. 搞适配

所有程序代码的执行都须要依赖于具体的零碎环境,所以,在我的项目开发之初,搭建相应的开发环境是必不可少的步骤。任何不以环境为依据的代码开发都是耍流氓。

如果是一开始就跟着我的项目走的话,那还好,至多环境都是逐步完善过去的。但要是中途退出的话,遇到简单我的项目,那就别提了,说多了都是泪,光一个环境搭建都能搞得你腰酸背痛外加腿抽筋。

自己亲历:在我的项目做到一大半的时候,被借调去声援其余我的项目,历时大略三个月左右。回来后的情况能够用一句话来概括——一顿操作猛如虎,一看后果二百五!啥?!单点登录?时候加的?PG库,怎么来的……配!配!配!当我的项目终于能失常跑起来的时候,我脑海中只有一个念头:我的项目别三月,见面不相识!

哎,据说最近有种新技术挺火的……试问你能忍得了这引诱?我只置信,没有不喜爱“偷腥”的程序猿,忍得住才怪了(手动白眼)。又到了搭环境的时候了,左手npm,右手brew,还有什么搞不定的,“偷腥”胜利的成就感那是相当爆棚啊!

等等,先别急着兴奋,骚年!我且问你两个问题:

- 1. 你主机中当初装了多少包?
- 2. 有共事要跟你协同开发,你怎么给他搭建出一个跟你这截然不同的环境?

嘿,我这主机中各种各样的包和服务都有,具体数目我都数不过去(一脸嘚瑟样)!至于协同开发,那还不简略,我写一个文档,只有依照文档一步步走上来,保障能配置进去!再或者,我配置一个虚拟机,有谁须要开发环境,我只有给他拷出一份虚拟机镜像不就完了。

嗯,我且不狐疑你永远能及时更新文档的毅力,也不质疑有些公司的电脑配置,在运行虚拟机之后,除了卡顿不晓得还无能啥……我只想问你:你不感觉你主机目前的状态有点相似于“大杂烩”吗?说好的程序猿的条理性呢?有了条理,咱们至多还能当斑马(搬码),没了条理,那只能作一团乱麻了!

运维治理的累

  1. 易出错
  2. 不统一
  3. 启动杂
  4. 效率低

作为运维人员,最常听到的一句话是什么?要我来说,相对是“在我这里好好的,到你那里怎么就不行了呢?”最常说的一句话是什么?我想大略或者也是这句吧。

累死累活、加班加点地才搞定了部署的问题,还没来得及歇一口气,又有新的补丁包发过来了。得,还得拼命!

很多运维人员的真实写照大略是:不是在调环境,就是在调环境的路上。

前途

因为各种各样的起因,咱们经常会把一件脑力活给干成体力活。愉悦感成就感没了不说,还得搭上黑眼圈和“地中海”。

直到这时,咱们或者会感叹:还是”CV 大法“好!

古话说:穷则变,变则通。人啊,只有被逼到肯定境地了,才会想着去扭转,寻找前途,劳碌的环境根本不可能滋润出”思变“的野心和欲望。眼看这膂力跟不上了,头顶的光辉越发夺目了,就晓得该到了寻求扭转的时候了。

那到底有没有”一次配置,终生受害“的解决方案呢?

虚拟机

首先,最容易想到的和接触最多的非虚拟机莫属。

虚拟机(virtual machine)就是带环境装置的一种解决方案。它能够在一种操作系统外面运行另一种操作系统,比方在 Windows 零碎外面运行 Linux 零碎。应用程序对此毫无感知,因为虚拟机看上去跟实在零碎截然不同,而对于底层零碎来说,虚拟机就是一个一般文件,不须要了就删掉,对其余局部毫无影响。

尽管用户能够通过虚拟机还原软件的原始环境。然而,这个计划有几个毛病。

(1)资源占用多

虚构机会独占一部分内存和硬盘空间。它运行的时候,其余程序就不能应用这些资源了。哪怕虚拟机外面的应用程序,真正应用的内存只有 1MB,虚拟机仍然须要几百 MB 的内存能力运行。

(2)冗余步骤多

虚拟机是残缺的操作系统,一些零碎级别的操作步骤,往往无奈跳过,比方用户登录。

(3)启动慢

启动操作系统须要多久,启动虚拟机就须要多久。可能要等几分钟,应用程序能力真正运行。

既然虚拟机存在这么多毛病,那还有没有更好的解决方案呢?还真有,那就是 Docker 技术。

一念缘起,我与 Docker 的故事从此开始……

初识 Docker

就因为这样一个念头,我懵懵懂懂的走进了 Docker 的世界。

Docker 是什么?

Docker 是一个开源的利用容器引擎,让开发者能够打包他们的利用以及依赖包到一个可移植的镜像中,而后公布到任何风行的 Linux 或Windows 机器上,也能够实现虚拟化。容器是齐全应用沙箱机制,相互之间不会有任何接口。总结一下就是:

  • Docker 是一个开源的软件部署解决方案;
  • Docker 也是轻量级的利用容器框架;
  • Docker 能够打包、公布、运行任何的利用。

Docker 的组成

一个残缺的 Docker 由以下几个局部组成:

  1. DockerClient客户端
  2. Docker Daemon守护过程
  3. Docker Image镜像
  4. DockerContainer容器

Docker 的作用

Docker 的主要用途,目前有三大类。

(1)提供一次性的环境。比方,本地测试别人的软件、继续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为 Docker 容器能够随开随关,很适宜动静扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器能够跑多个服务,因而在本机就能够模拟出微服务架构。

总结

以上就是我和 Docker “结识”的过程,以及对 Docker 的简略认知,也欢送大家分享本人和 Docker 结缘的过程。

~

~ 本文完,感激浏览!

~

学习乏味的常识,结识乏味的敌人,塑造乏味的灵魂!

大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢送关注,心愿大家多多指教!

你来,怀揣冀望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!

常识与技能并重,内力和外功兼修,实践和实际两手都要抓、两手都要硬!

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理