乐趣区

关于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 结缘的过程。

~

~ 本文完,感激浏览!

~

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

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

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

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

退出移动版