读书

故事 – 读书笔记

《故事》是2014年天津人民出版社出版的图书,作者罗伯特·麦基,该书集结了罗伯特·麦基30年的授课经验,对《教父》《阿甘正传》《星球大战》等经典影片的详细分析中,清晰阐述了故事创作的核心原理。
语录:

  1. 正如评论家肯尼斯·伯克所言,故事是人生必需的设备。
  2. 日复一日,我们寻求亚里士多德在《伦理学》中提出的那一古老问题的答案:一个人应该如何度过他的一生?人类一直基于四大学问——哲学、科学、宗教、艺术——来寻求亚里士多德问题的答案。随着我们对传统意识形态的信仰日益消减,人们转而寻求我们依然相信的源泉:故事的艺术。
  3. 作家总要围绕着一种对人生根本价值的认识来构建自己的故事——什么东西值得人们去为它而生、为它而死?什么样的追求是愚蠢的?正义和真理的意义是什么?在过去的几十年间,作家和社会已经或多或少地就这些问题达成了共识,可是我们的时代却变成了一个在道德和伦理上越来越玩世不恭、相对主义和主观主义的时代—— 一个价值观混乱的时代。例如,随着家庭的解体和两性对抗的加剧,谁还会认为他能真正明白爱情的本质?即使你相信爱情,那么你又如何才能向一群越来越怀疑的观众去表达?
  4. 我们必须深入地挖掘生活,找出新的见解、新版本的价值和意义,然后创造出一个故事载体,向一个越来越不可知的世界表达我们的解读。
  5. 主情节难以自圆其说,充斥着方便的巧合和脆弱的动机。
  6. “好故事”就是值得讲且世人也愿意听的东西。
  7. 故事是生活的比喻。
  8. 如果要在讲得精彩的琐碎素材和讲得拙劣的深奥素材之间进行选择的话,听众总是会选择讲得精彩的琐碎故事。
  9. 故事事件创造出人物生活情境中富有意味的变化,这种变化是用一种价值来表达和经历的,并通过冲突来完成。
  10. 就一部典型的电影而言,作者将要选择四十到六十个故事事件,或者换个常用的说法,叫做场景。小说家也许需要六十个以上,戏剧作家则很少达到四十。
  11. 故事场景称为故事事件,他不是一个镜头,而是一系列要表达这个故事事件的镜头。每个场景的设置是为了解说,要表达有关人物,世界观或者历史的意义,但更重要的是表达的价值一定要包涵转折,例如情绪的,价值观的正负反转。只是解说的场景可以把场景被设置到其他片段里去。理想是没有不含转折的场景。
  1. 节拍是人物的动作或者镜头,一个或多个节拍构成一个场景。
  2. 一个或多个场景构成序列,序列是故事中,每一个真正的场景都会对人物生活中负荷价值的情境进行转折,而一个序列表示更大的不可逆转的转折。
  3. 一系列序列构成更大的结构:幕。
  4. 一系列的幕便是故事。
  1. 在一个理想的世界里,艺术和政治绝无任何瓜葛。但现实中,它们彼此不可能相安无事。
  2. 故事三角:大情节,小情节,反情节
  1. 美国人是从死水一潭的文化藩篱和一成不变的等级制度中逃脱出来的,对变化具有一种天然渴求。我们不断求变,试图找到救世之方,如果有的话。在编织好一张投入亿万美元的“大社会”安全网之后,我们现在又要将它撕得粉碎。相反,旧世界已经从数百年的惨痛经验中学会了畏惧这种变化,认为社会转型将不可避免地带来战争、饥荒和混乱。
  2. 写爱情故事时,我们要问的最重要的问题是:“什么东西会阻止他们?”也即,爱情故事中的故事到底在哪儿?
  3. 压力是根本。在没有任何风险的情况下做出的选择意义甚微。
  4. 无论激发写作的灵感是什么,都不一定要保留在作品之中。前提并非稀世珍宝。如果它有助于故事的进展,则可保留,如若故事讲述意图偏转,则应舍弃那一原始灵感,顺应故事的发展轨迹。关键问题并不是如何开始写作,而是如何保证能够继续写下去并不断刷新灵感。
  5. 说教根源于一种天真的热情,认为虚构作品就像手术刀一样可以用来切除社会的毒瘤。
  6. 因为即如玻璃是一种光媒,空气是一种声媒一样,语言仅仅是故事讲述的一种媒介,事实上还是多种媒介之一。在故事的心脏跳动的,是比纯粹的言语更为深奥的东西。
  7. 故事的艺术不在于讲述中间状态,而在于讲述人类生存状况的钟摆在两极之间摆动的情形,讲述在最紧张状态下所经历的人生。
  8. 这里有一道简单的测试题,适用于任何故事。问:风险是什么?如果主人公得不到他想要的东西,他将会失去什么?更具体而言,如果主人公不能达成其欲望,将会发生在他身上的最坏的事情是什么?
  9. 无论我们如何试图铲除不平,运用各种各样的平等主义理论,人类社会却总是那样顽固,在权力安排上呈现其固有的金字塔格局。换言之,这便是政治。
  10. 讲故事就是许诺:如果你注意听我讲,我就给你惊奇,接下来便是发现生活的喜悦,在你从未想象过的层面和方向探知生活的喜怒哀乐。
  11. 笑声是我们对自己所认为荒唐或无耻之事所做出的批评。它可以产生于任何情感之中,从恐惧到爱情。而且我们的笑声总是伴随着解脱。笑话具有两个部分:系包袱和抖包袱。
  12. 人类的行动只能趋善而从是,只不过是根据自己所相信或推断出的善恶是非标准来行动而已。
  13. 我们永远不可能完全表达出自己的真情实感。因为我们很少真正了解它们。
  14. 经典的反讽故事:
    1. 他终于得到了他一直想要的东西……但是已经太晚,他不可能拥有它。
    2. 他被推到离他的目标越来越远的地方……结果却发现事实上他已被引导到他的目标。
    3. 他抛弃了他事后才发现的对他的幸福不可缺少的东西。
    4. 为了达到某一目标,他不知不觉地采取了一些背道而驰的步骤。
    5. 他采取行动想要毁灭某一事物,结果却适得其反,搬起石头砸了自己的脚。
    6. 他得到了某种他坚信会给他带来厄运的东西,想方设法要摆脱它……结果却发现那是一份幸福的厚礼。
  15. 即使前面两种用途都不适用,所有的影片都需要一个结局场景以表示对观众的尊重。因为,如果高潮已经打动观众,如果他们笑得不能自禁,被恐惧惊呆,充满着一种社会义愤,还在擦拭眼泪,那么银幕突然变黑,片尾字幕开始滚动,将是非常不礼貌的。因为这是催促他们离开的信号。
  16. 我们绞尽脑汁想猜出到底是谁或者怎么回事,但是,我们还是希望作者的侦探大师要比自己想象的更高明。
  17. 戏剧作家享有一项银幕剧作家所没有的特权——可以写出常人绝不可能说出口的对白。他不仅可以写出诗歌般的对白,而且还可以像莎士比亚、T.S.艾略特和克里斯托弗·弗赖伊一样用诗歌本身作为对白。
  18. 银幕剧作家确实可怜,因为他不能当诗人。他不能使用明喻和暗喻、谐音和头韵、节奏和尾韵、提喻和转喻、夸张法和弱陈法以及大转义。相反,他的作品必须具备文学的一切实质,但又不能文学化。一部文学作品本身就是一个完成品,而一部银幕剧本还得等待摄影机来将它完成。
  19. 从本质上而言,是主人公创造了其他人物。其他所有人物之所以能在故事中出现,首先是因为他们与主人公的关系。
  20. “他已经在那儿坐了很长时间”是拍不出来的。所以我们会不断地用这一问题来约束我们的想象:我在银幕上看到的是什么?然后只描写那些可以拍摄出来的东西:或许可以用“他掐灭了第十支香烟”、“他焦躁地看了一下表”,或者“他打着呵欠,尽量不让自己睡着”来暗示等了很长时间。

心得:

  1. 豆瓣的分不是崇洋媚外,好莱坞每年四百到五百部作品,我们能引入和看到的寥寥自然是浪淘沙出来的。
  2. 作者吐槽纯特效大片,打着故事的幌子显示技术,其实是很不会被流传很容易遇冷的,会喧宾夺主,但是商业上会取得成功。严厉,打击范围也有点大,不好评价这句话的对错。
  3. 对于影片结尾,人物对生活的价值没有任何变化的电影,并不是在故事,而是叙事影片。在作者看来,用高超的技巧讲述一件事和用高超的技巧讲述一个故事是不同的。两者都可以拥有高超的技巧,让人感动欢笑,如果是叙事的结局稍加修改就能升华主题,那么一定是创作者刻意为之,要么是有必须要遵守的事实,要么就是在刻意讽刺。作者应该是因为这个原因,将故事和叙事拆开成两件事儿。
  4. 有次坐滴滴遇到一个白发爷爷,脑补了一些他生活的场景,觉得自己很聪敏,就自信开心地和别人分享了…看这个书才意识到,作家经常就是会去思考如果xxx将会发生什么来创作,我这点顺着想的内容确实没什么可被人称赞的…
  5. 忽然觉得和人沟通也是一样,你有一翻你认为正确或者重要的话想说,讲述方式以及和谁讲述都很重要,但更核心的事他们能不能理解,能不能同意,就是书中的共情是需要设计产生的,而在和人沟通的时候就是和人说人话和鬼说鬼话。
  6. 接上,而一个人产生共情的核心是要观众自己,这个是不是这就是之所以大部分作品开场白总会用一些镜头讲述普通人的形象来介绍主角。
  7. 故事很重要但可能不曾提及的事,是他是如何工作的,世界的政治是如何的,这些会体现在细节里的信息和故事本身同等重要。
  8. 忽然觉得所谓的艺术都是创作,通过特定的技法表达特殊的情绪,世界,观点,来感染观众。而故事作为一种艺术形式,最重要的技法不是文笔,而且冲突,裂痕,选择等角色之间的情绪纠葛。
  9. 观众永远是期待一个好故事的,不能让故事的发展和观众心里的预计相同。
  10. 所有故事里的反派应该都是很有魅力的角色,因为他在做的是在某些角度或者多数人看来不正确的事情,作者必须赋予反派足够的爱而不是也恨这个角色。反派只为了反衬主角的好不是一个好故事,好故事是一定要带有冲突的合理性的。

性的尊重 读书笔记

摘编:

  1. 婚姻之外充满了爱情,婚姻之内却缺乏足够的爱情
  2. 婚姻能够对女性的整个机体产生巨大而深远的影响,正因为如此,女性更适合在婚后一段时间受孕,而不是刚刚结婚的时候。因为经过一段时间,她们的机体才能够适应新的生活环境,她们也才能恢复冷静,身体也才能恢复健康。
  3. 理解了本书之前各章节的读者应该都能意识到一点:对夫妻来说,每一次性交都应当是一场全新的冒险,每一次交合都必须经过一番全新的求欢过程,即使已经有了多年性关系的老夫老妻也不例外。
  4. 世上最困难的事情就包括两个思想不同的人做到求同存异——保持自己的观点,同时又不会竭力改变或者压迫对方,而且还能够信任对方的判断,就像他们在认同对方看法时产生的那种温暖的感觉。
  5. 夫妻双方都应当毫无保留地充分信任对方。男性和女性都应当拥有单独外出旅行、走亲访友、周末外出度假或者远足的自由,并且不会受到对方的为难,不会激起对方丝毫的嫉妒心或者疑心,甚至对方不会产生丝毫消极的念头。
  6. 放开对彼此的束缚,两颗心才能紧紧地贴在一起,牢不可分,对婚姻关系来说这是一条至高无上的真理。
  7. 对已婚的爱侣来说,肉体偶尔分开一下,精神才有可能保持最亲密的关系。对生性敏感的人来说,一段时间的分离和独处有助于他们重新焕发生命力和创造力。
  8. 其实,有时候妓女提供的不只是肉体上的满足,而且还有一种沉醉的感觉——双方都纵情享乐的那种投入感,这正是很多丈夫没能从妻子那里找到的感觉。
  9. 我所说的“创造物”并不是指男欢女爱的结晶,即有形的孩子,我指的是相爱的男女在完美的交合过程中产生的超越物质世界的存在物。

观感:

  1. 婚后的女性可能会因为性的不满足而产生心理和生理问题(阴道充血)。
  2. 女性的生理欲望呈现周期性,也会有偶尔的所听所看刺激到,同时还有被情绪和身体的温柔和爱抚唤醒,不过在低潮期可能需要更多努力才行,或者并不能。
  3. 作者同时不认为女性应该是男性的性欲工具,女性有自己的性欲,也需要被满足。
  4. 还提到了男性时刻都能有性欲,女性周期性地有,男性的禁欲是没有那么多坏处的。
  5. 还提到动物世界里都是到了雌性发情期雄性才有的交配,并且东西每次交配都需要雄性充分的展示,而在婚后男性甚至都不去做大自然告诉动物该去做的事情。结果就是女性的体验很差,作者大概是告诉女性已婚读者男性前戏不足让女性心理期待落空是正常的,问题在男性。
  6. 书中提到了几个例子都是试图说明先结婚,稳定婚后生活再考虑要小孩,这样有利于感情婚姻和性的稳定。
  7. 看国外的书,总是会让我觉得有一些奇怪,今天算是想明白怎么奇怪。他们总会去解释一些在我看来不用解释的常识,并且有时候关于很基础的(初中高中的知识)知识的解释还是错的。就是很罗嗦,而且还很多是错的…我觉得可以理解成他们常识教育不到位,或者可以理解成不洗脑,每个知识学进去都是保持着辩证的思考的。

End.

当历史可以观看 读书笔记

摘编:

  1. 不要说那时中国人很少有照相机,即便有,他们对这类司空见惯的生活场景与细节,也往往习焉不察,不怎么去留意,他们更关注的,或者说更引起他们好奇的,反而是西方的新潮时尚和新奇物件。因之,这批极富社会学眼光的影像记录,便尤其珍贵。
  2. 图六定格了20世纪初胶东的一位农民驾着独轮车赴岳丈家省亲的情形。小车的前端驮了两布袋粮食,粮食后面坐着他的孩子,再后面是他的媳妇,怀里抱着一个更小的孩子。小车行进在崎岖的乡间小路上,吱扭吱扭,划破了旷野的宁静……而车子上面负载着的,是他全部的生活与希望。
  3. 中国传统正史的叙事,只专注于朝代更替之类的“经国大事”,往往忽略百姓日常生活的细节,殊不知,正是这些司空见惯的细枝末节,在默默生聚并传递着更深层的时代消息。
  4. 另一张照片(图三)里,既没有群情激昂的欢呼,也没有临街挥舞的彩旗和鲜花,路边店铺前的几十个人,男女老幼、各色人等都有,他们只是平静地站在那里远远地观望,或微笑,或淡然,或冷眼,或沉思……自晚清以来,北京城的民众经历了太多的“你方唱罢我登场”,他们似乎已经习惯了眼前的戏码,只是不知道这一次的“改朝换代”会给自己带来怎样的命运。
  5. 在文章的最后,作者感叹道:“……父亲永远也不会再年轻,而我却沿袭了父亲年轻的生命。每一个老人都曾经年轻过,每一个年轻人都将渐渐衰老,直到有一天从这个地球上消失。”
  6. 当中国实行“一边倒”,完全投入苏联老大哥怀抱以后,倾力消费苏联的舶来品,自然也变成了压倒一切的“政治”任务。这张原本为“临别留念”而拍摄的合影照片,多年之后,其拍摄的初衷,却被照片上满眼的花衣服喧宾夺主,反而成为了特定时代中苏“蜜月”的某种佐证。

人类简史(房龙版)读书笔记

语录

  1. 可以毁灭人类的冰河时代反给了人类极大的教训,强迫他去运用他的脑筋。
  2. 埃及人发明象形文字。
  3. 人类的历史就是饥民求食的记载。哪里食物多,人就找到哪里去住家。
  4. 他的帝国的寿命不比他的寿命长久,几个有野心的军官瓜分了他的疆土,但是他们依然忠于那个融合希腊与亚洲的观念与知识的大同世界的迷梦。
  5. 穆罕默德学习到崇拜唯一的神是件很有益处的事情。
  6. 一切的人都是平等的,但他们生活经过一段固定之后,有些人渐渐阔了,有些人渐渐穷了,政府容易落入那些不必工作而能生活与可以用全副精力委身于政治的人手里。
  7. 等你长大时,在这个世界里你会发现永远没有脱离穴居时代的人。所有的时间,所有的年代,都是重叠的,一代一代的观念,都是彼此衔接的。
  8. 繁荣的意思就是闲暇,男女有了闲暇,便有机会去买抄本,会关心文学、艺术与音乐了。
  9. 学问与艺术的复活之后必有宗教兴趣的复活。
  10. 固然暴徒往往出现在革命的舞台上,但他们永远是受中等社会里专门职业的人的煽动与指挥,这些人在反抗国王及其朝廷时,往往利用饥饿的群众做有力的援助。
  11. 君主独裁政治业已毁灭,代替他的乃是少数人的专制。
  12. 神圣同盟大会的主要结果,将警察变为国家最重要的官吏,对于有敢批评政府一点行为的人处以最严厉的刑法。

笔记

  1. 人类先进化出简单地语言,再穿起了衣服,住在洞穴里,开始使用火,开始吃熟食,而后发明器具,制石斧,石锤,土碗,土罐子,储存粮食。
  2. 可以毁灭人类的冰河时代反给了人类极大的教训,强迫他去运用他的脑筋。就像03年的SARS,现在的肺炎一样,终会推进一些时代性的东西或者模式,所有挑战皆是机遇。
  3. 苏美尔人是美索不达米亚最早的居民,发明了楔形字。
  4. 腓尼基人是唯利是图的商人,为了提高写字速度,简化了楔形字,创造了二十二个简便的字母。后来这些字母进入希腊,希腊人添加几个自己的字母,运入意大利,意大利把字体略加修改,又教给今日欧美人祖先的欧洲西部的野蛮民族。
  5. 希腊人之所以是雅典人,是因为父亲和祖父都是雅典人,无论你对社会贡献有多大,只要你父母不是雅典人,你永远都是“外国人”。这个话倒有点像大国大城里,对社会有贡献的人,就应该享有权利。
  6. 看到亚历山大大地从欧洲征服到印度,倒是觉得在冷兵器时代,信息不够发达的那个年代里,国家太大管理起来真的非常麻烦,消息传递很慢,行政命令的传达也不够迅速。
  7. 好喜欢中世纪时候的大学,聪明人觉得有大真理想告诉别人,就站在公园或者哪里进行演讲,有趣便有人听,无趣人们便耸耸肩路过他。有趣的聪明人渐渐地有一些固定的年轻听众,他们带着笔记本过来,有一天下雨了,便躲到地下室或者哪里去,这就是最早的大学。
  8. 萨莱诺大学、巴黎大学、博洛尼亚大学、牛津大学等大学的起源都是上面这样的原因,渴望知识的人逐渐聚集起来,各自发声,有人提出想法,有人反对,有人倾听。
  9. 早在中世纪时代的航海,死亡率是极高的,大都是因为坏血症(蔬菜吃的太少)。

大国大城读书笔记

本篇皆是之前所读的临时的记录和摘抄。

关于读书

之前是觉得,这本书很有意思,但对我没有价值,读到今天(30%)才意识到这本书内容对于我的价值。其1是,它真切地打破了我对大城市房价和交通认知,并且纳入了一个经济发展的系统规律里;其2是隐约感觉如果我做工作变迁和买房的这种决策的时候,可以站在高一点的层面去考虑这个决策,偏僻一些的地区是符合宏观经济模型的。

倒是更加认为说开卷有益,优秀的信息和知识的摄入是有意义的,意义不在于翻开书时所思所想,而是在读完之后所获得的所思所想才能知道有没有意义,倒觉得读书更有意思了,因为有没有意义读过才知道。

关于读书笔记

因为从觉得大家需要读书我才读书变成了,读书确实还是蛮有趣的,读了之后才知道有什么意义,同时我也有记笔记的习惯,因为想法会自己冒出来,所以也是在思考该怎么去记这个读书笔记。

把看的过程中随心记下的东西整理成文,读起来果然还是有一点奇怪,而且在你们阅读起来应该很难懂这本书是在讲什么。但是觉得读书嘛,还是随心点好,也不是要写一篇笔记让别人知道这本书讲的什么,随心所记皆是所想,也不为考试也不为知识点,突破我的认知或者我觉得有趣之处,挥上两笔。

想了一下,不为记录知识点,不为什么目的去读,写这个系列的核心也不是让旁人看到我这个笔记就能读懂这本书的概要,不是这样子的。

我写读书笔记只是因为读这本书记录了一些笔记,可能是有趣的摘抄,对哪一段文字的赞同,深思或者反对,也许是一些自己提出的问题,或者是一些自己独立的观察思考的内容,整理成文。

本书的核心观点

这本书核心讲的就是希望中国人口能够自由地流动,打破户籍限制;并且主张对地方政府用地分配不以地区均衡,而要以人口或者中GDP(包括外来人口)来进行分配,才符合作者认为的经济学原理;同时作者应该是支持并且想推行建设用地可以跨地区购买的政策。很重要的一点是政府的政策需要符合市场规律,符合经济规律。

再其次作者认为很重要的一点不是GDP总值,而是GDP均值,例子就是美国,纽约GDP虽然高,但人口也多,其他的城市GDP虽然低但人口少,其实全美所有州的人均GDP相差不大的。

语录

  1. 现有体制下,地方政府欠债却还不起,最终还是要全体人民一起还,不是税收就是通胀。
  2. 城里人可以用自己的房子来抵押贷款,为什么农民的土地不可以?
  3. 我在日本乘出租车时,把地址给司机看,司机先是戴上老花镜,然后又拿出个放大镜。
  4. 中国的问题是城市化进程受阻,而不是城市化过度
  5. 违反经济规律来办事,只会让自己受损。
  6. “空心村”的出现是城市化的必然结果,关心“空心村”里留守人口的生活状态,并不等于要扭转人口流出的趋势。
  7. 城镇居民和农村居民人均受教育水平分别是10.5和7.6年。
  8. 这个模型里,国家总人口的系数其实是0.76,这说明,如果一个国家的人口增长1%的话,这个国家首位城市的人口只增长0.76%。也就是说,人们在向首位城市迁移的时候,已经将人口集聚导致的各种成本考虑进自己的理性决策了。
  9. 中国公共服务的筹资体制是基于地方财政的,所以地方政府总觉得,教育啊,交通啊,都是我本地财政提供的,如果你不是我本地人,我为什么要把这个公共服务平等地提供给你呢?当我把这个逻辑说给我的欧洲同事听的时候,他们觉得这很荒谬!他们的第一个反应就是,难道这些移民在大城市没有创造价值,没有给政府的税收作贡献么?
  10. 环保的出路是提高人口密度,增加交通系统,降低开车比例;
  11. 除了个人和家庭特征之外,结果发现还是大城市的人们生活快乐感更高。
  12. 当社会完全依照单一的身份来划分社会群体的时候,就会使社会冲突加剧。
  13. 贫民窟的本质是住房需求大大超过住房供给的“住房短缺”现象。
  14. 理想的意义并不是立刻实现它,理想的意义在于指明一个方向,引导社会经济发展的方向。

笔记

  1. 地方政府拥有经济上相当自主的权利(相对于中央政府)。
  2. 倒是意识到一个问题,普通平民百姓眼里可能看到城市化的程度很高,但从数据的眼里,中国城市化的进程远远不够。想表达的意思是要了解学习理论,不要凭自己的直觉判断,你认为的高点可能只是一个山坡,我说的当然是房价。
  3. 经济规模效应是指达到一定的规模之后,再增加生产成本会递减,例如在容纳30名小学生的教室里增加5名学生(20%的增长)只需要增加一排座位,不需要增加教室和教师;
  4. 关于农民本身拥有的土地可以交易的问题我其实还是挺疑惑的,因为在古代确实耕地的问题很容易导致社会动荡,尤其是中国农民数量如此之多的国情。书中是反复强调土地吞并是没有问题的,但我想象中应该是会有问题的,尤其是有机械之类的情况下,土地可能会大量集中在某些人手里,然后这些人挣着大量的钱,农民没钱没地又没技术,在大城市的最底层,并且原有的的回农村的保障没有了。但我说的话又是有书中提到的,基于当前政策的现状讨论未来政策的情况,所以…我也不太清楚这个如果成立会怎么样,但算是有所思有所得吧。
  5. 看到越后面就觉得作者有一点避重就轻,专挑符合自己理论的来讲,例如某人举例子说纽约温室气体79%来自楼宇,而全美平均值是32%,所以大城市不环保;然后作者说是环保的,因为温室气体主要来自汽车尾气,楼宇高说明开车少;但是我觉得一定要考虑纽约本身就发展好,楼宇更高。

几个问题

读到中间出现了几个问题,也也一并记一下。

问题一

有一个问题,出现在我脑海里,但作者并没有解释,其他国家和城市是如何解决大城市的人口问题的:

东京是如何解决交通、教育和医疗这些基础服务的问题的?

东京人口:3800万;
北京人口:2154万;
上海人口:2424万;
深圳人口:1302万;
广州人口:1480万;
杭州人口:980万;

书中在后面解释了,一个是交通规划,开车比例小,公共交通通勤率很高;。

问题二

书中反复提到的城市化率是什么?

答:城镇人口占总人口(包括农业与非农业)

问题三

通篇都在聊市场经济的好处,目前户籍土地在国内的限制,那我想知道说市场经济完全没有缺点吗,为什么会有计划经济呢?

市场经济优点:
1、市场能自发的实现资源配置,市场调节是最节约成本的经济调节方式。它能相应减少政府支出和缩小政府规模。
2、消费者的选择决定着企业的生产,从而消费者的愿望能够得到最大程度的满足。市场调节是最民主的经济调节方式。
3、市场信息比较准确。消费者要用货币选票传递需求信息,他们对各种商品的投票建立在真实需求基础上,没有半点虚假。
4、市场中的竞争能更好地调动人们的生产积极性。在计划体制下,政府和企业也可以组织各种竞赛;但是,竞赛以鼓励先进为主,竞争以惩罚后进为主,二者激发人的潜能的作用有很大不同。

市场经济缺点:
1、收入分配不均,大多数低收入者对资源配置的发言权较少。人与人之间存在才能、体力、财产、机会、价值观、家庭负担等多层次差异,市场会进一步放大这些差异,造成两极分化愈演愈烈。
2、市场经济中存在一些垄断行业。大鱼吃小鱼,市场奉行的是一种丛林法则。垄断企业可能通过损害消费者利益谋取私利。
3、市场经济中环境污染比较严重。治理污染或减少污染物排放需要很大成本支出。残酷的市场竞争往往会让那些更关心环境问题的企业倒闭。
4、市场经济经常会出现较高的失业率。企业的目标是赚钱,它吸收员工的前提是该员工能够为企业赚钱。机器比人更听话,企业倾向于在技术进步过程中用机器代替人力。理性的企业不会站在政府的高度去考虑就业率以及与此相关的犯罪率和贫困人口问题。

其缺陷主要是:在资源的配置上,存在盲目性和局限性,引发恶性竞争、短期行为,导致经济危机;在收入的分配上,会造成社 会分配不公,加剧贫富的矛盾;在意识形态和社会生活方面, 会产生拜金主义等消极现象。

计划经济优点
1、能保证所有的人都有工作,能保证国计民生必需品的生产和供应。
2、对经济进行预测和规划,制定国民经济发展战略,在宏观上优化资源配置,对国民经济重大结构进行调整和生产力合理布局,有利于实现国民经济重大比例关系的合理化。
3、有利于推动经济持续增长。
4、能够合理调节收入分配,兼顾效率与公平。

计划经济缺点:
1、容易脱离实际,造成不必要的浪费。
2、对微观经济活动与复杂多变的社会需求之间的矛盾难以发挥有效的调节作用,容易产生生产与需求之间的相互脱节。
3、不能合理地调节经济主体之间的经济利益关系,容易造成动力不足、效率低下、缺乏活力等现象。
4、形成特权阶层和被奴役阶层不可避免。消极怠工成为劳动者的必然选择,束缚了企业的手脚,企业缺乏生产的积极性与主动性。
5、不利于推动技术进步和革新。
6、容易导致供求脱节及宏观经济比例重大失调。

End.

读书笔记之——Docker基础与实战(基础篇)

之前读过《第一本Docker书》,所以对docker的使用和概念都是大概清楚的,只是没有实际搭建使用过,这次读本书会配合把本博客使用docker部署,但这本书还是看的很快,笔记做的不一定易懂,不过也没想过是为其他人提供(为主)的,毕竟我做笔记主要是为了让自己阅读可以保持一个良好的习惯,增强自己的阅读效果。

因为是实用工具类的书,所以笔记还是会稍微长一点,也会转述很多书上的内容下来。

第一章、Docker

随着互联网的发展,服务器市场快速转向云环境,但大量服务器的购买和配置会很麻烦,于是出现了“不可变基础设施”的概念,指主机OS和服务器运行环境分离,设置一次环境便不用再设置,每次发布软件只需重新生成镜像就好了。

最初出现的是虚拟机,但虚拟机会对硬件虚拟化或半虚拟化,每个运行的软件打包要分别对OS、执行文件库和应用程序打包,软件的镜像会过分的大。于是Docker就出现了,Docker对操作系统而不是硬件进行抽象,更加轻量化,每个软件只需要库和应用程序的抽象,减小了镜像的体积。

Docker最初利用了linux提供的lxc这种系统级虚拟化,它又使用了chroot和cgroups隔离用户空间和硬件空间,从docker0.9版本开始,人们开始开发lxc的替代品libcontainer。

在配置时,可以进行切换,libcontainer表示为native,LXC表示为lxc。

Docker有容器和镜像的概念,镜像就是软件,容器就是一个运行中的镜像,一般开发人员开发好一个软件,然后打包相关的以来成镜像,交付给运维人员,运维人员用docker批量运行容器,大概是这样的一个关系。

Docker另一个非常有特色的地方在于,它使用了类似与git版本管理的方式保存镜像,每次只保存变化的部分,因此每一个更新软件的包都是非常小的。

读后感

和《第一本Docker书》同章节对比了一下,《第一本Docker书》的重点放在docker的介绍以及能干什么,而本书本章的重点放在和虚拟机的对比上,以及docker的优点是什么。

第二章、安装Docker

(略)

第三章、使用Docker

注意:必须总是以root权限运行Docker。

docker的指令都是以

$ docker <command>

运行的,例如docker run, docker push。
在学习基本用法前,先从Docker Hub下载并运行镜像。

Docker通过Docker Hub(https://registry.hub.docker.com)搭建镜像共享生态系统。著名的发行版都可以在这里找到镜像,与镜像相关的所有命令默认都设置可以使用Docker Hub。

1、docker search
使用docker search 命令在Docker Hub中搜索镜像。

[~]$ sudo docker search ubuntu
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/ubuntu                            Ubuntu is a Debian-based Linux operating s...   5013      [OK]       
docker.io   docker.io/ubuntu-upstart                    Upstart is an event-based replacement for ...   68        [OK]       
docker.io   docker.io/rastasheep/ubuntu-sshd            Dockerized SSH service, built on top of of...   47                   [OK]
docker.io   docker.io/consol/ubuntu-xfce-vnc            Ubuntu container with "headless" VNC sessi...   29                   [OK]
docker.io   docker.io/torusware/speedus-ubuntu          Always updated official Ubuntu docker imag...   27                   [OK]
docker.io   docker.io/ubuntu-debootstrap                debootstrap --variant=minbase --components...   27        [OK]       
docker.io   docker.io/ioft/armhf-ubuntu                 [ABR] Ubuntu Docker images for the ARMv7(a...   19                   [OK]
docker.io   docker.io/nickistre/ubuntu-lamp             LAMP server on Ubuntu                           10                   [OK]
docker.io   docker.io/nuagebec/ubuntu                   Simple always updated Ubuntu docker images...   9                    [OK]
docker.io   docker.io/nickistre/ubuntu-lamp-wordpress   LAMP on Ubuntu with wp-cli installed            7                    [OK]
docker.io   docker.io/nimmis/ubuntu                     This is a docker images different LTS vers...   5                    [OK]
docker.io   docker.io/maxexcloo/ubuntu                  Base image built on Ubuntu with init, Supe...   2                    [OK]
docker.io   docker.io/admiringworm/ubuntu               Base ubuntu images based on the official u...   1                    [OK]
docker.io   docker.io/darksheer/ubuntu                  Base Ubuntu Image -- Updated hourly             1                    [OK]
docker.io   docker.io/jordi/ubuntu                      Ubuntu Base Image                               1                    [OK]
docker.io   docker.io/datenbetrieb/ubuntu               custom flavor of the official ubuntu base ...   0                    [OK]
docker.io   docker.io/esycat/ubuntu                     Ubuntu LTS                                      0                    [OK]
docker.io   docker.io/konstruktoid/ubuntu               Ubuntu base image                               0                    [OK]
docker.io   docker.io/labengine/ubuntu                  Images base ubuntu                              0                    [OK]
docker.io   docker.io/lynxtp/ubuntu                     https://github.com/lynxtp/docker-ubuntu         0                    [OK]
docker.io   docker.io/teamrock/ubuntu                   TeamRock's Ubuntu image configured with AW...   0                    [OK]
docker.io   docker.io/ustclug/ubuntu                    ubuntu image for docker with USTC mirror        0                    [OK]
docker.io   docker.io/vcatechnology/ubuntu              A Ubuntu image that is updated daily            0                    [OK]
docker.io   docker.io/webhippie/ubuntu                  Docker images for ubuntu                        0                    [OK]
docker.io   docker.io/widerplan/ubuntu                  Our basic Ubuntu images.                        0                    [OK]

2、docker pull
从Docker Hub拉取镜像:

[~]$ sudo docker pull ubuntu:latest

就成功拉下来了ubuntu linux的镜像,接下来我就能在我的centos上拥有ubuntu的运行环境和库依赖了。
命令格式为:docker pull <镜像名称>:<标签>。标签latest最新版本,也可以是14.04, 12.10。另外镜像名字中可以在’/’之前制定用户名,比如:yylogo/ubuntu就是拉取我上传的ubuntu,官方镜像不会出现用户名。

3、docker images
可以列出本机已经下载的镜像。

[~]$ sudo docker images
[~]$ sudo docker images ubuntu

第一个命令查看本地已经下载的所有镜像,第二个查看镜像名称相同但标签不同的镜像。

4、docker run
创建容器,运行容器。
如前所述,本地已经拥有别人创建的镜像,现在需要使用镜像创建容器,并且将容器运行起来,需要使用的就是docker run命令。
命令格式:docker run <选项> <镜像名称> <要运行的文件>,如:

[~]$ sudo docker run -i -t --name hello ubuntu /bin/bash
root@7db6a454c06e:/#

其中有三个选项分别是-i, -t, –name.
他们的作用分别是:
使用-i(interactive) 选项将容器的STDIN开启,-t(Pseudo-tty)选项告诉docker为容器分配一个伪tty终端,这样新创建的容器才能提供一个交互式shell,若不要运行一个后台服务的容器,则这两个参数是最基本的参数。
这个–name用于指定容器名称。若不指定名称,Docker会自动生成名称并进行指定。
现在已经生成了一个和主机OS完全隔离的空间,可以使用exit退出,因为在ubuntu镜像中直接运行/bin/bash可执行文件,所以退出后容器也会终止(stop)。
7db6a454c06e是docker生成的容器ID。

5、使用ps命令查看容器列表

sudo docker ps # 查看所有正在运行的容器
sudo docker ps -a # 查看所有容器

6、使用start命令启动容器

sudo docker start hello
sudo docker ps

命令格式为:docker start <容器名称>,也可以使用容器ID代替容器名称。

7、使用restart命令重启容器
与重启OS类似,可以重启某个容器。

sudo docker restart hello

命令格式为:docker restart <容器名称>,也可以使用容器ID代替容器名称。

8、使用attach命令连接容器
docker容器启动的时候会按照docker run命令制定的参数来运行,因此启动后会运行一个交互式shell,可以用docker attach重新附着到该容器的会话上,执行:

sudo docker attach hello

但如果运行DB或服务应用程序将无法输入只能看到输出。

9、使用exec命令从外部运行容器内的命令
命令格式为:docker exec <容器名称> <命令 <命令参数> >,可以使用容器ID代替名字,只有在容器运行时本命令可用。

sudo socker exec hello echo "Hello World"

10、使用stop命令终止容器
命令格式为:docker stop <容器名称> 名称可用容器ID替代,效果可以使用docker ps查看。

11、使用rm命令删除容器
命令格式为:docker rm <容器名称> 也可以用容器ID替代,效果可以用docker ps查看。
记得必须使用root权限。

12、使用rmi命令删除镜像(images)
可以删除指定镜像。
命令格式为:docker rmi <镜像名称>:<标签>,也可以用镜像ID替代,效果用docker images查看。
如果不用标签则删除该镜像名称所有标签,如:docker rmi ubuntu。

读后感

和《第一本Docker书》同章节对比了一下,介绍的命令少一些,而且命令讲解上也输给《第一本Docker书》。

另外读到这里,别以为你会docker了,你只是会用docker的基本命令了。

第四章、创建Docker镜像

编写地一个Dockerfile:

[~]$ cd /tmp/
[tmp]$ mkdir example
[tmp]$ cd example/
[example]$ vim Dockerfile
#输入下面这些:
FROM ubuntu:latest
MAINTAINER Foo Bar <foo@bar.com>

RUN apt-get update
RUN apt-get install -y nginx
RUN echo "ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

VOLUME ["/data", "/etc/nginx/site/enabled", "/var/log/nginx"]

WORKDIR /etc/nginx

CMD ["nginx"]

EXPOSE 80
EXPOSE 433

上述示例基于Ubuntu 创建Docker镜像,且安装nginx服务器。

FROM:指定基于的基础镜像。Docker镜像基于已创建的镜像。
MAINTAINER:维护者信息
RUN:运行shell脚本或命令。
VOLUME:要与主机共享的目录,也可以在docker run命令中使用-v选项进行设置。例如:-v /root/data:/data将主机的/root/data目录连接到Docker容器的/data目录。
CMD:指定容器启动时执行的文件或shell脚本。
WORKDIR:为CMD中设置的可执行文件设置运行目录。
EXPOSE:与主机相连的端口号。

创建镜像的命令是docker build,命令格式:docker build <选项>

sudo docker build --tag hello:0.1 .
sudo docker images #稍等片刻即可以生成镜像文件,显示镜像目录.
sudo docker run --name hello-nginx -d -p 80:80 -v /root/data:/data hello:0.1

最后一行的参数含义如下:
-d 选项在后台运行容器.
-p 80:80 选项将主机的80端口与容器的80端口连接起来,并暴露到外部,接下来使用<主机IP>:80就能访问容器的80端口(http://127.0.0.1:80/)了.
-v 在前面有介绍,将主机的目录映射到容器的目录中去。

第五章、查看Docker

1、使用history查看镜像历史:

sudo docker history hello:0.1

命令格式:docker history <镜像名称>:<标签>,可以用镜像ID代替名称。

2、使用cp命令复制文件
将容器中的目录复制出来

sudo docker cp hello-nginx:/etc/nginx/nginx.conf ./

命令格式:docker cp <容器名称>:<路径> <主机路径>

3、使用commit命令从容器修改中创建镜像
假设hello-nginx容器中的文件内容发生变化,将容器创建为镜像文件。

sudo docker commit -a "Foo Bar <foo@bar.com>" -m "add hello.txt" hello-nginx hello:0.2   # 用docker images查看效果

4、用diff命令检查容器文件的修改

sudo docker diff hello-nginx

命令格式为docker diff <容器名称>,也可以用容器ID替代名称。
其中A是添加的文件,C是修改的文件,D是删除的文件。

5、使用inspect命令查看详细信息
命令格式:docker inspect <容器名称 或 镜像名称> 可以用容器ID或镜像ID替换。

第六章、灵活使用Docker

6.1、搭建Docker私有仓库

docker命令默认使用Docker Hub,下面创建私有仓库服务器。
Docker仓库服务器名为Docker注册(registry)服务器,使用docker push上传,docker pull下载。
将镜像数据存储到本地使用的命令是:

sudo docker pull registry:latest  # 拉取注册服务器镜像
sudo docker run -d -p 5000:5000 --name hello-registry 
    -v /tmp/registry:/tmp/registry 
    registry      # 创建注册服务器容器并运行,运行端口是5000,并且将镜像文件保存在主机的/tmp/registry下

部署好了docker私有仓库如何使用呢?

sudo docker tag hello:0.1 localhost:5000/hello:0.1
sudo docker push localhost:5000/hello:0.1

创建标签的命令格式为:docker tag <镜像名称>:<标签> /<镜像名称>:<标签>
上传镜像的命令格式为:sudo docker push /<镜像名称>:<标签>
在上传之前一定要先新建一个tag, 相当与指定这个镜像是来自某个注册服务器,然后我的理解是,在任何一个命令,镜像名称前面都可以直接加上/。
后面提到了如何使用非本地数据存储如Amazon S3,应该是registry内置Amazon S3的支持,所以在运行时指定相应的环境变量即可。

6.2、连接Docker的容器

Docker创建镜像时,虽然可以把Web服务器,DB都安装在其中,但一般的做法是分别生成镜像。这样生成镜像时经常需要某个镜像的端口不对外暴露,那么会需要连接相邻的容器,比如Web服务器对外暴露端口,并且连接不对外暴露端口的DB,就可以做到良好封装的数据交换。

连接容器时要在docker run命令中使用–link选项,格式为–link <容器名称>:<别名>,之后在这个容器内使用<别名>:<端口号>就能直接连接到所link的那个容器了。

6.3、连接到其他服务器的Docker容器

前面说了,–link可以将统一服务器的多个容器连接在一起,下面介绍使用Ambassador容器链接不同服务器的容器。

如上图,Ambassador容器是运行在两个不同服务器的中间容器,可以在客户端容器和服务端容器不感知的情况下就能跨机器部署容器。
客户端容器连接客户端Ambassador容器,服务端Ambassador容器连接服务端容器,并且服务端Ambassador容器要对外暴露对应的端口。Ambassador容器是这样一个中间容器。

6.4、使用Docker数据卷

Docker一般的数据都是存储在容器内,使用Union File System进行管理,但使用数据卷就有一种插入了一块硬盘一样,将主机某个目录挂在进容器的某个目录下,容器对某目录的操作全部都会落实在主机上,并不会通过Union File System。

可以直接指定-v /data,设置容器内/data目录为数据卷,docker会自动分配一个路径给容器用于数据卷,可用docker inspect查看。
但一般的命令格式为-v <主机目录>:<容器目录>
可以让多个容器共享一个目录。

6.5、使用Docker数据卷容器

数据卷容器是设置数据卷的容器,专门提供数据卷供其他容器共享。从普通容器连接到数据卷容器后即可直接访问数据卷容器内的数据卷目录。

sudo docker run -i -t --name hello-volume -v /root/data:/data ubuntu /bin/bash  #创建数据卷容器
sudo docker run -i -t --volumes-from hello-volume --name hello ubuntu /bin/bash  #普通容器连接数据卷容器

主要在于–volumes-from <数据卷容器>,可以直接使用其它容器的数据卷

6.6、创建Docker基础镜像

一般创建镜像的方法都是基于Docker Hub提供的官方镜像,但docker提供创建基础镜像的命令:docker import,命令格式是docker import <URL或- > <镜像名称>:<标签>
觉得不太重要就不转具体细节上来了。

6.6、在Docker内运行Docker

书上说这是一个实验性质的功能,在最外曾的docker容器创建时加上–privileged,这个选项使得容器内部可以使用主机的所有Linux内核功能。启动了这个容器,这个容器内在创建容器就和正常创建是一样的了。

第七章、详细了解Dockerfile

Dockerfile是比较重要的内容,因为这个是自动化打包和部署所必须要了解的内容。
前面编写过一次Dockerfile,这里介绍一下细节,编写格式为<命令> <形式参数>,#是注释,命令不区分大小写,但一般使用大写字母。Docker会依据Dockerfile文件中的命令顺序依次执行命令,在Dockerfile中,命令总是以FROM开始,没有则无法创建镜像。
此外,命令是独立运行的,例如运行RUN cd /home/hello也不会对后面的命令产生影响。
创建镜像时,要在Dockerfile所在的目录使用docker build命令,使用–tag或-t选项设置镜像名称,若想上传到Docker Hub在/之前添加用户名即可。

7.1>.dockerignore

所有位于Dockerfile目录下的文件都称为上下文,特别是在创建镜像时,由于所有的上下文都会传送到Docker守护进程,所以请不要将非必要文件放在该目录,需要忽略文件时使用.dockerignore,类似与.gitingore。

7.2>FROM

命令格式:FROM <镜像>或FROM <镜像>:<标签>,前者默认使用latest。

7.3>MAINTAINER

设置镜像创造者信息,格式自由。

7.4>RUN

用于在FROM中设置的镜像上运行脚本或命令。RUN运行结果会生成新的镜像,运行的详细信息记录在镜像历史,是每一次RUN都会产生一个新的镜像,会影响容器的创建速度,因此一般会在层次和启动速度之间有一个平衡,有两种方式:
1、RUN <命令>,这种方式会用/bin/sh执行命令,若/bin/sh可执行文件不存在,则无法使用。
2、RUN [“<可执行文件>”, “<形式参数1>”, “<形式参数2>”…]

RUN apt-get install -y nginx
RUN echo "Hello Docker" > /tmp/hello
RUN ["apt-get", "install", "-y", "nginx"]
RUN ["/usr/local/bin/hello", "--help"]

7.5>CMD

用于设置容器启动时运行的脚本或命令,即使用docker run 命令创建容器或者使用docker start 命令启动容器时运行,有几种方式执行:
1、用/bin/sh运行命令:CMD <命令>
2、无shell直接运行:CMD [“<命令>”, “<形式参数1>”, “<形式参数2>”…]
3、使用ENTRYPOINT时:这个特殊一点,可执行程序是ENTRYPOINT指定,参数由CMD指定。

ENTRYPOINT ["echo"]
CMD ["hello"]
$ sudo docker build --tag example .
$ sudo docker run example
hello

7.6>ENTRYPOINT

虽然CMD和ENTRYPOINT都可以用于设置容器启动时要运行的命令,但docker run命令二者运行方式不同。
如下图:
>Dockerfile

FROM ubuntu:latest
CMD ["echo", "hello"]
###############

$ sudo docker build --tag example .
$ sudo docker run example echo world
world

从执行结果看,忽略了CMD的内容,下面用ENTRYPONT尝试一次
>Dockerfile

FROM ubuntu:latest
ENTRYPOINT ["echo", "hello"]
###############

$ sudo docker build --tag example .
$ sudo docker run example echo world
hello echo world

如果设置了ENTRYPOINT,则run后的参数会变成执行文件的参数。

7.7>EXPOSE

用于设置与主机相连的端口号,与docker run中的–expose一致。
注:只与主机连接,不对外暴露。对外暴露在docker run指定-p、-P选项。

7.8>ENV

设置环境变量,应用与RUN, CMD, ENTRYPOINT。

Dockerfile:
ENV GOPATH /go
ENV PATH /go/bin:$PATH

使用格式为ENV <环境变量><值>

7.9>ADD

用于向镜像添加文件,使用格式ADD <要复制的路径> <文件在镜像中的路径>。
Ps:1、要复制的路径以上下文目录为基准,不能使用上下文以外的文件、目录或绝对路径。
2、设置为目录时,会复制目录下所有文件。另外,也可以使用通配符。
3、也可以设置为网络文件URL。
4、解压缩位于本地的压缩文件。但是对于网络上的压缩文件,只进行解压缩,然后添加整个tar文件。
5、文件在镜像中的路径必须设置为绝对路径,并且若以/结尾,则创建目录并将文件复制到该目录。
6、像ADD ./ /hello这样添加当前目录时,.dockerignore文件设置的文件与目录被排除在外。

7.10>COPY

向镜像中添加文件,与ADD不同,添加压缩文件时不会解压缩,也不能使用URL,其他条款类似ADD。

7.11>VOLUME

用于将目录下的内容存储到主机而非容器。

Dockerfile
################
VOLUME /data
VOLUME ["/data", "/var/log/hello"]

使用格式:VOLUME <容器目录>或VOLUME [“容器目录1”, “容器目录2″…]
但VOLUME不能设置与主机的特定目录进行连接,若想连接必须在docker run命令中使用-v
选项指定.

7.12>USER

用于设置运行命令的用户帐号,该用户会运用与RUN, CMD, ENTRYPOINT,使用格式为:USER <帐号用户名>,USER后面所有的RUN,CMD,ENTRYPOINT都会得到应用,中间可以设置其他用户以更换用户。

7.13>WORKDIR

用于设置执行RUN, CMD, ENTRYPOINT命令的目录,使用格式为WORKDIR <路径>,WORKDIR后面所有的RUN,CMD,ENTRYPOINT都会得到应用,中间可以设置其他路径以更换目录。
可以使用绝对路径或者相对路径,相对路径是相对与上一个WORKDIR的路径,最初基准为/。

7.14>ONBUILD

将当前镜像作为基础镜像创建其他镜像时,ONBUILD指令用于执行一些要出发的操作。ONBUILD制定的命令在构建时不执行,而是在其他子镜像中执行。
指令格式为ONBUILD <Dockerfile命令><Dockerfile命令的形式参数>,除了MAINTAINER和ONBUILD之外的所有指令都可以使用。
可以用docker inspect命令查看镜像的ONBUILD指令中定义的内容。