两年之后,再来思考Docker的价值

【原文编者的话】作者应该是个Geeker,喜欢思考很多本质性的东西,并开创性的将Docker跟链接器来作比较,并提出了很多有意思的观点如:应用程序栈的链接器等。不管对不对,至少他这种思考的方式值得我们学习。



 

我必须告诉Docker,他们的创意完全满足我对“天才般创新”的标准,Docker让我花了一段时间来弄明白它到底是什么。

伟大的创新绝对不是发明能飞的汽车,而常常是一些很简单但是细细想想背后的原理非常复杂的一类事物。举个例子,比特币就是一个绝好的发明。它很简单,但是背后的故事非常复杂,仔细想想很多人都会发出疑问,它可以流通吗?有股票价值吗?可以用于债券吗?这其实是个分类的问题,可能把所有的这些不同方面的属性结合在一起就是个新的事物。

Docker绝对不是一个像OpenVZ或者BSD jails一样的容器。当我第一次使用Docker的时候,我费了很多时间在找如何在一个运行的容器中配置一个/dev的node;最后我终于理解了 Docker:其实你没有必要这样做,你只需要启动一个/dev的node的容器即可,Docker的容器是进程,而不是一个完整的虚拟机系统。

Docker是一个新的虚拟机:在不运行时表现为“静止”(immutable)包含运行程序的容器(其实就是镜像),然后启动此镜像后在系统中表现为一个进程。

  但是,Docker的本质是什么呢?

这个问题我思考了好几天,最后我顿悟了:Docker是个能够将手动链接变得轻松的工具。更具体的说,是个可以手动链接应用程序还能将其保存的工具。(作者的意图是从链接这个低层工具出发来思考Docker的价值,因为低层的链接器就是将不通程序模块组合成一个程序来运行,从哲学层面上将确实跟 Docker做的事情有些类似,但是维度不一样。)

但是后来我又仔细的思考了一下,好像又不是这样的。

  链接器是什么

如果你使用过GCC、clang或者Visual Studio,你就在使用编译器来构造可以执行的程序。对于C或C++来说,编译器会将源代码编译成一堆的目标文件;目标文件中包含了源代码对应于目标平台的机器代码(或者是中间代码)。但是,要使程序能够运行,你的代码一定会调用其他模块的代码——函数;所以链接过程就是把你写的程序中所有依赖于其他模块、库中的代码收集起来并链接到你的目标代码中。(注:关于程序是如何执行这个问题,可以参考译者之前的博文:程序是如何运行的)

(责任编辑:安博涛)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

2016年软件即服务发展的五大主题

2016年软件即服务发展的五大主题

对于2016年软件即服务(SaaS)我并没有什么伟大的预言,也没有深邃的远见或是史诗般的猜...[详细]

从生产安全体系视角看数据安全

从生产安全体系视角看数据安全

互联网的发展一日千里,安全技术随着互联网的发展,出现的新场景、新技术、新名称都越...[详细]

RSA 2019大会最值得关注的10个网络安全趋势

RSA 2019大会最值得关注的10个网络安全趋势

RSA2019大会本周开幕,来自八家知名网络安全厂商的高官们谈到了他们期待在今年大会上...[详细]

Gartner:政府部门2019年将重点投资「数据

Gartner:政府部门2019年将重点投资「数据分析与网络安全」的技术

数字化转型时一场长期竞赛,2018年数字化转移面临的主要挑战是缺少用于支持数字化转型...[详细]

区块链正在应用于正在兴起的网络安全运动

区块链正在应用于正在兴起的网络安全运动

尽管有关加密货币和交易所的黑客和欺骗的新闻铺天盖地,但事实仍然是,真正的区块链在...[详细]

返回首页 返回顶部