docker 是 golang 的第一个杀手级应用,发展迅猛, 现在各大云计算平台几乎全都支持 docker 实例,包括 谷歌,亚马逊,阿里云等。 golang 本身已经让我惊喜万分,而 docker 更是极大的激发了我对虚拟化的想象。

关于软件和硬件

IT 业发展至今,软件和硬件始终是无法分割的两个物体。 就拿最近几年红红火火的智能机时代来说, 很久之前的诺基亚智能机, 软件和硬件相辅相成, 连进入主界面都需要按一个特定的按钮才能进入。 软件的操作都严重依赖键盘等按键。 体验非常不好, 对软件设计人员的约束也很大。

而苹果 iPhone 横空出世的时候, 最大限度的让你忘记硬件, 硬件主要只剩下一个 home键 和 可触控玻璃。 就是这样的 home键 和 触摸屏 组合, 大大的释放了软件开发人员的想象力, 自由的设计不同的软件交互风格。 从而让手机应该爆发式的增长。

两个最关键的概念: 镜像和容器

好像说跑题了,回到 docker , docker 是一种虚拟技术, 很多文档都说的云里雾里让人摸不着头脑, 但是按我的理解其实就是主要分为两个层次, 第一层是 【镜像(image)】 , 第二层是 【容器(container)】。 他们两者是互相转化的关系, 前者是一种【过去式】,后者是【进行时】, 镜像就好像是 git 的 tag 标签,是已经打上烙印, 是可以回滚回去的。 后者就是正在运行的状态,是基于镜像的。

比如我们对镜像 ImageA(镜像 ImageA 是静止状态)启动起来, 启动后就变成了 ContainerA 容器(运行状态), 当我们对该容器进行了修改(比如在该容器中运行了 sudo apt-get install cmake), 则该容器 ContainerA 和初始的镜像 ImageA 会出现了差异, 然后我们可以将该容器 commit 成另一个镜像 ImageB 。 这样下次在需要装有 cmake 的容器时,我们可以直接基于 ImageB 启动(run) 出一个 ContainerB , 这样 ContainerB 就自然而然已经装好了 cmake 这个软件。 而且各种容器互不干扰,每个容器其实就对应着一个虚拟机, 也就是在同一台物理机上面我们可以虚拟机 N 个虚拟机(N个容器)。

更具体的学习手册请看 【Docker从入门到实践】。

一劳永逸的软件部署

docker 对软件部署非常的友好, 比如我们之前装了一个 cmake , 而今天我们需要搭建一个集群,有N台虚拟机,每个虚拟机都需要 cmake 和 clang。 则我们只需要对之前的 ImageB 启动一个容器 ContainerC (ContainerC 本身已经带有 cmake), 然后装上 clang ,然后再将 ContainerC commit 成 ImageC 。 这样 ImageC 就带有 cmake 和 clang 。 所以我们直接基于 ImageC 启动 N 个容器 (ContainerC1 ContainerC2 … ContainerCN)。 就是环境一摸一样的N台虚拟机。 而不是之前的一台一台重复性的安装软件。 甚至对于以前让运维煞费苦心的软件依赖等问题, 现在也都可以通过不同镜像的叠加,轻松搞定。

tag就是最好的后悔药

可能很多人会想,如果只是为了避免重复性的安装操作。 可以将安装操作换成脚本即可。 但是假设如果我们的安装脚本出错了, 出现了误操作或者装错了软件版本导致兼容问题了怎么办? docker 也可以非常好的解决这个问题, 因为有镜像的缘故,每个镜像都是另一个镜像演化而来的, 而且每个镜像可以打标签, 所以回滚也非常的容易,如果我们有一个镜像叫 YanyiwuImage:v1 。 当下次讲 container commit 到 YanyiwuImage:v2 。 让我们发现 YanyiwuImage:v2 出错了,我们可以很轻易的回滚到 YanyiwuImage:v1 。 回滚也就是 image 支持标签的意义所在。 就像 git 版本管理一样,保存那么多 commit 信息就是为了更好的回滚。 告别以前动不动就需要重装系统,从头来过的软件部署之殇。

也可以防止一些误操作,比如当你的服务器上面有一个文件存储服务, 因为误操作上传了一些文件, 因为有了 docker 的回滚,直接一键回滚, 也就省去了一个个删除误上传的文件的麻烦事。 回滚其实就是软件的时光机。

对测试更加友好

当我们开发系统级软件服务的时候, 就拿即时消息推送服务来说, 在测试推送服务的性能的时候, 我们经常需要调整 linux 系统参数来进行测试。 而我们很可能一不小心测试完后忘了将参数调整复原。 甚至也很容易忘了我们究竟修改了哪些参数。 这时候如果是在 docker 里面,因为 docker 支持回滚。 我们只需要回滚一下,即可回到过去。 大妈一分钟变萝莉。 世界还是那么美好。 测试时调整参数再也不需要那么提心吊胆和小心翼翼。 就像有句广告词说的,有了 docker 之后,怎么调整参数都不怕侧漏。

总结

对于回滚的良好支持再加上镜像可以层层叠加, 光是这两者就可以组合出各种巧妙的应用。 再加上启动迅速,容器轻量, 轻松甩了其他虚拟机好几条街。

参考

  • Docker从入门到实践

转载请注明出处: golang的杀手级应用:docker

golang的杀手级应用:docker相关推荐

  1. “5G杀手级应用”Cloud VR 华为如何打响5G第一枪

    雷锋网消息,近日华为在上海召开华为云 5G Cloud VR服务发布会暨5G Cloud VR开发者沙龙,Cloud VR有何潜力成为5G第一批杀手级应用,华为又在其中扮演怎样的角色. Cloud V ...

  2. 你不应该关注区块链的“杀手级应用”

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 在每一次区块链大会上,人们无不讨论一个话题:区块链的下一个杀手级应用是什么?下一个获得大规模应用的成功案例是什么?其实这 ...

  3. 杀手级AI补代码工具问世,支持23种语言、5种主流编辑器!(附链接)

    本文经AI新媒体量子位授权转载,转载请联系出处. 本文约2100字,建议阅读10分钟. 本文介绍了新开发出的"Deep TabNine"代码补全工具,支持多种编程语言和编辑器. G ...

  4. 下一个视觉「杀手级应用」来了,依图行人重识别ReID性能创纪录

    人脸识别之后的下一个风口是什么? 对于这个问题,业界似乎早已有了共识.从 AI 的人脸识别能力超越人类以来,学术界和产业界的目光逐渐转向另一个更具科研意义和应用价值的课题--行人重识别(Person ...

  5. 「压缩」会是机器学习的下一个杀手级应用吗?

    机器学习的研究正进行的如火如荼,各种新方法层出不穷.尽管这样,还有一个问题摆在面前,研究这些算法对于现实有什么用.特别是当讨论起机器学习在手机和其他设备上的应用时,经常会被问到到:「机器学习有什么杀手 ...

  6. 专访盛大创始人陈天桥:未来的杀手级应用必将诞生于脑科学

    翻译丨于波  校对丨其奇 来源丨Medium 神经科技 初见陈天桥,他穿着带有花纹的短袖衬衫,休闲款式的蓝色牛仔裤,迷彩色的运动鞋,仿佛是个享受退休生活的人. 过去的他可不是这样.1999年,陈天桥创 ...

  7. [译] 如何写一篇杀手级的软件工程师简历

    原文地址:How to write a killer Software Engineering résumé 原文作者:Terrence Kuo 译文出自:掘金翻译计划 本文永久链接:github.c ...

  8. 7个杀手级的开源监测工具

    7个杀手级的开源监测工具 想要更清晰的了解你的网络吗?没有比这几个免费的工具更好用的了. 网络和系统监控是一个很宽的范畴.有监控服务器.网络设备.应用正常工作的方案,也有跟踪这些系统和设备性能,提供趋 ...

  9. 杀手级AI补代码工具问世,支持23种语言及5种主流编辑器,程序员沸腾了

    边策 安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI GPT-2,一个来自OpenAI的逆天语言模型,现在能用来补全代码了. 一位来自加拿大的大四学霸,开发了一款"Deep Ta ...

最新文章

  1. 【fiveKeyPress】2秒内五次点击键盘任意键(或组合键)触发自定义事件(以Pause/Break键为例)
  2. 刘满强:干扰和恢复下农田土壤线虫群落研究及热点问题初探
  3. LeetCode-数组-删除有序数组重复元素
  4. 用python生成词云wordcloud
  5. cad新手必练300图_[CAD]平面练习图,CAD新手练技术练速度的好去处
  6. VMProtect SDK+ASProtect SDK保护
  7. 数据结构:Binary and other trees(数据结构,算法及应用(C++叙事描述语言)文章8章)...
  8. 操作系统系列「一」OPERATING SYSTEMS THREE EASY PIECES 《操作系统导论》
  9. Class绑定、Class对象绑定、v-if(条件渲染)、v-show(元素显示)、v-for(列表渲染)
  10. 【Go语言】集合与文件操作
  11. 放下偏见,原来嵌入式程序员如此“妖娆”!
  12. 我与CSDN的2020年
  13. perl里q,qq,qw等的用法
  14. Atitit 现代信息检索 Atitit 重要章节 息检索建模 检索评价 第8章 文本分类 Line 210: 第9章 索引和搜索 第11章 Web检索 第13章 结构化文本检索 目录 L
  15. m3 pcb开孔 螺丝_螺丝过孔工艺孔底孔尺寸参照表
  16. 渗透测试-postmessage xss
  17. Web前端开发技术(第3版)储久良 实验12
  18. 记一次带有FSG壳的熊猫烧香病毒分析过程
  19. 密码技术---密钥和SSL/TLS
  20. 悉尼大学COMP5216Assignment2课业解析

热门文章

  1. 【威联通Nas】安装docker版本,包含百度云,迅雷x,火狐浏览器,图形化压缩软件,文本编辑器,qb下载器,中文桌面支持
  2. 第5章第28节:演讲者放映、观众自行浏览和在展台浏览 [PowerPoint精美幻灯片实战教程]
  3. PHP经典实例(第二版) php实例大全
  4. 在程序员上看到《企业开发新思维:COID模式简述》,有感
  5. 微信小程序学习(一):开发准备、授权与验证
  6. winform-htmlEditor窗体超文本编辑器
  7. [转载]读史札记22:政治家的道德底线——谈李斯之死
  8. HackTheGame
  9. 边下边看 七款P2P下载软件全能大比拼
  10. MosFET/FinFET/GAFET ——鳍式晶体管还能走多远