学掌门网校 发表于 2018-5-14 13:17:25

关于Docker这个问题,或许你真的不知道?

本帖最后由 博为峰网校 于 2018-5-14 13:22 编辑

  Hello world,大家好,我是 pshu. 今天来和大家说一个 docker 相关的冷知识.希望大家会感兴趣!



    首先讲下"冷知识"这个词.要一个比较地道的翻译的话,我个人觉得 trivia是一个比较好的单词.
  Trivia:
  The act of answering questions regarding information that is often useless or inapplicable
  回答那些无意/无用问题的行为.
  哒哒哒,等急了吧,那今天的"冷知识"(trivia question)是:
  * *当启动一个docker 容器时, 默认的容器名字是什么? * *
  CONTAINER ID    IMAGE          COMMAND    NAMES
  eee4de167f06    hello-world    "/hello"   peaceful_mcnulty
  783ab628a474    hello-world    "/hello"   suspicious_jones
  5767cd8dc7c0    hello-world    "/hello"   heuristic_bassi
  cc4623db38ad    hello-world    "/hello"   elated_montalcini
  e8bb358ada71    hello-world    "/hello"   sleepy_kilby
  6e67c5398a72    hello-world    "/hello"   boring_kowalevski
  21ffb481d971    hello-world    "/hello"   angry_euler
  8c9322287dff    hello-world    "/hello"   keen_mayer

  简单的说,默认容器名为"${形容词}_${人名}"的格式.
  但是再深入的问一句,那些人名是谁呢? 一共多少个这样的组合呢?
  源代码说明一切 /pkg/namesgenerator/names-generator.go#L105
  https://github.com/moby/moby/blo ... /names-generator.go
  源码中的 left 是 93 个形容词的数组,褒贬的都有; right 是 160 位知名科学家和黑客的名字.


  func GetRandomName(retry int) string {
  begin:
      name := fmt.Sprintf("%s_%s", left, right)
      if name == "boring_wozniak" /* Steve Wozniak is not boring */ {
        goto begin
      }
      if retry > 0 {
        name = fmt.Sprintf("%s%d", name, rand.Intn(10))
      }
      return name
  }
  那看到代码其实会有两个吐槽点.

  1.关于 goto
  pshu 在接受大学计算机编程教育的时候,老师就提到使用 goto是一个坏的编程习惯. 所以很多接受过类似说法的同学都是对这个 goto嗤之以鼻. 其实恰恰相反,这个 goto 其实让代码变的更加的容易理解.
  那关于 goto有害的说法是怎么来的能,这里就是介绍今天的这位荷兰的大神 Edsger Wybe Dijkstra. 中文一般音译为"狄克斯特拉".
  其实叫他大神我觉得有点太不严肃,应该称作是计算机行业中的先贤. 像图论中寻找两个之间最短路径的算法 Dijkstra算法就是 Dijkstra 发明的. 除了算法方面, Dijkstra 在并行计算(concurrent programming) 领域也是开拓者. critical section (临界区) 和 Dining philosophers problem (哲学家就餐问题), 都是他提出来的概念.
  回到 Goto 的问题上,关于 goto "有害"的历史是怎么来的呢?
  Dijkstra 在20世纪50年代大量使用机器码编程的经历;就此经历,他提出了"在高级编程语言中频繁使用 goto 通常是程序结构不好的征兆." 1968的时候, 他写了一篇小论文 "A Case against the GO TO Statement", 标题大意,就是一个不要用 goto 的案例. 结果在 CACM 发表的时候, 编辑把标标题改成了 "Goto 语句"被认为是有害.
  想不到最后以讹传讹,直接给很多学编程的学生心里立下了 goto 就是烂代码的 flag.
  这段代码的第二个点就是 /* Steve Wozniak is not boring */

  2. the Woz
  国内翻译成沃兹,提到沃兹就不得不提苹果这家伟大的公司了. 对苹果这家公司,最有名的肯定是 Steve Jobs 了; 但这个 Woz 是和 Jobs 一起称为苹果双核的人. 当年沃兹发明的 Apple I/II 这两台苹果电脑, 可以说是开拓了个人电脑的新时代. 苹果还有一个第三号创始人 Ronald Wayne,他仅在苹果工作了12天; 他是这样评价这两个人的:"乔布斯有时如同恶魔附身,而沃兹尼亚克则像个被天使控制着的孩子。" 当Apple II热销之后苹果股票大涨, 沃兹就拿出八万股票以很低的价格卖给那些他认为没有被苹果善待的老员工.
  除了这些 Woz还有哪些让人觉得不一般的事迹呢?
  1.6岁就做出半导体收音机, 而且是全美最年轻获得业余无线电操作证.
  2.和 Jobs 制作贩卖盗打电话的设备, 并用此设备恶作剧假装是基辛格打电话给意大利教皇打电话.
  3.自建了一个讲笑话的电话热线,虽然亏钱,但靠这个热线遇到了第一任太太
  4.带着第二人未婚妻,开飞机,坠机,所幸最后无大碍.
  这些经历看, Woz 绝对不是一个无趣 boring 的 人.
  还有一点是 Woz 是 Sheldon 的心目中排名15的最有科技远见的人(Steve Jobs 排在第21位) ,因为版权问题,请各位同学自行搜该视频片段吧.

  最后小结下
  当面对 "docker 容器的默认名字是什么?"这样的trivial question 和 "Goto 语句是否是有害"的复杂问题时. 如果能抑制住内心想用一个简单答案来回答的冲动,保持着一颗好奇心,慢慢探索,多多思考. 最后获得的肯定会比问题本身更有价值的知识.
  最后祝大家 happy hacking & happy docker!

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8052),我们将立即处理。

推荐课程:虚拟化测试环境的解决方案——Docker入门与应用实战
http://www.atstudy.com/files/default/2018/05-11/154708ca1a2b209231.jpg

随着大数据平台型产品的逐渐成熟,业界有不少的大数据研发团队开始使用Docker。在云计算领域,复杂的平台环境和配置也促使运维人员开始逐步认识到Docker的重要性。博为峰网校特邀热门讲师丁老师,带来《虚拟化测试环境的解决方案——Docker入门与应用实战》,致力于解决以上问题。为了测试工作的顺利进行,为了不被这个飞速发展的IT世界所淘汰,赶快加入吧。课程链接:http://www.atstudy.com/course/579

了解更多课程内容及课程安排,可咨询QQ 2852509883 或致电客服 400-821-0951(工作日9:00-17:30)
【看这里】技术交流、拓展人脉、领取福利欢迎加入博为峰网校大课堂>>>
http://www.atstudy.com/files/default/2018/05-11/1548320cad11554677.png




海海豚 发表于 2018-5-15 08:32:36

了解一下,之前还真的没有了解过这个
页: [1]
查看完整版本: 关于Docker这个问题,或许你真的不知道?