【软件】Docker学习手记(1)

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


为什么需要Docker?

比如说你开发了一个软件,前端基于Nodejs构建,后端使用Python编写,数据库用了MySQL,还用了Redis做消息系统。它们每一个都有特定的版本,都使用了各种第三方的包,也包含了你自己写的各种各样代码文件。

无论是前端还是后端还是数据库什么的,一开始可能非常简单,但是随着开发的推进,代码越来越多,功能越来越多,用到的第三方包也越来越多,项目结构也越来越复杂。

如果这时候你买了一台新电脑,那么要让这个项目能在新电脑上继续开发下去,除了拷贝项目文件之外,你还得安装一大堆的软件,做一大堆的配置,这些头疼的工作可能耗费你几小时甚至几天的时间。

同样,当这种软件在你的电脑上开发完毕之后,要在客户指定的电脑或者云服务器上运行起来,恐怕也不是件容易的事情。

而至于让其他人来接手你的软件,对它进行维护和升级,即使那个人非常懂得编程能够看懂你的代码,但要搞清楚你用了几个月甚至几年不断更迭、配置、修补而成的错综复杂项目结构,也绝对不是件容易事。——实际上,让他能够把你的软件移植到其他设备似乎都是不可能完成的工作。

我们需要一种开发和部署模式,能够在任何可行的设备上快速重建我们软件项目所必要的环境。

我们需要什么?

我们编写的软件并不仅仅是我们自己输入的代码,还要依赖很多别人编写的代码(第三方包Dependences),以及运行在系统上面的其他库和服务(系统库Libraries)。

将软件移植到其他设备上,除了拷贝我们自己编写的文件,还要确保用到的第三方包Dependences也一个都不少,还要确保目标设备的系统环境和我们开发测试时候一致,这不仅要求系统的类型和版本都一致,还要求系统上软件环境和系统配置也都一致。——这不是个轻松的事情。

首先说第三方依赖,我们可能会用Python的pip install 命令安装十数个甚至更多需要的模块Modules,而Nodejs的npm命令直接或间接安装的模块可能有数十甚至上百个。

在编写代码之前,你须要有一个强大且稳定的第三方依赖管理工具。它可以从一开始就准确的记录你所有的安装和卸载模块记录,而且还可以快速的将所有用到的模块打包整理。

你的项目文件应该包含【自己写的代码】【需要的第三方依赖包】两部分构成。要知道,虽然在目标电脑上批量重新安装这些依赖包听起来很美好,但其中的不确定性一旦发生,你就会头疼的要死。

而至于操作系统环境,唯一可行的就是将你用于开发的操作系统直接连锅端到其他设备上。开发后把整个系统做成一个系统镜像,到目标机器上安装整个系统镜像,然后你就拥有了一切。

——这听起来有些夸张,但使用虚拟化技术来说又是确实可行的,它的问题不在于镜像整个操作系统的文件是否太大,而在于这个操作是否够快。多人共同开发软件的时候,快速的保持开发环境的同步是非常重要的。

同步系统镜像的思路是行不通的,唯一可行的是使用云端的同一个操作系统运行代码和进行测试。——每个开发者的电脑只担当一个代码编辑器的作用,连IDE都不算。

理想的情况什么样?

  1. 在云端有一台测试服务器,它可以生成不同的系统环境,每个项目单独使用一个系统环境进行开发,各自安装相关软件,各自进行设置,互不干扰。

  2. 项目团队开发成员在各自的电脑上编写代码并随时将代码文件同步到测试服务器上,测试服务器可以监测到文件的变动,并且可以针对不同文件的改动而更新运行相应的程序。
    比如说当它发现后端Python代码文件被更新的时候,它就会自动执行命令来重启这些Python程序;如果它发现Nodejs代码文件发生变化的时候,就自动执行命令重新编译js文件生成新页面代码。

  3. 当团队开发完成一个新版本并且经过测试之后,直接把测试服务器上运行的整个系统生成一个镜像,再把这个镜像部署到正式服务器之上,甚至部署到多个服务器之上(分布式部署)。

开发过程中,我们可以随时向测试服务器上的Git推送新版本代码,当然也可以随时把代码版本同步到其他Git服务上,例如Github。
最好我们也可以随时把整个系统镜像进行备份,生成多个版本。——这就需要镜像文件不要太大,生成镜像的时间也不要太久。

在我们的这个梦想中,Docker将扮演的正是镜像生成、管理和部署的角色。

<未完待续>


欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


每个人的智能新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容