@左耳朵耗子的文章,有個“資深專家”來問我問題,把我問怒了
昨晚,有個資深專家專問來找我討論docker,他說他知道我在做一些docker的工作,所以,想來和我了解一下docker的情況。我一開始就問他主要想要解決什么樣的問題?他說,主要是想解決資源隔離的事情。我說,資源隔離的事,Hypervisor或LXC就可以干了,不一定要用 docker啊?雖然docker也可以干這事,不過,我認為docker是基于LXC上的一個提供更強大的運維功能的Bridge。
然后,他問我,什么是Hypervisor,什么是LXC?什么是VM,什么是Container?于是我簡單的科普了一下。
接下來,他問我,為什么LXC要比Hypervisor要快?于是,我又科普了一下。在科普LXC的時候,我和他說,這就像chroot一樣,結果他問我,你說的那個ch什么t的是個什么東西?我說,是change root,他說,什么是change root?,我說把你jail到一個目錄下。他問我,這是怎么做到的?于是我又廢了半天勁。
再接下來,他問我,docker的那個A什么FS是什么東西?于是我又科普了下,我又廢了半天勁。繼而談到了docker的分層鏡像。
然后,他說,docker的鏡像好大啊。運行起來內存怎么吃得消啊?于是,我只好科普了一下操作系統運行并不會把整個操作系統裝入內存的。另外,docker其實并沒有運行一個操作系統,而只是做了環境隔離。他覺得我說的不對,和我爭了半天。
接下來,他問我,照你這樣說,為什么不做一個0-size的完全為空的Docker image,讓其看到宿主機的文件系統。我說,不能這么干啊,你不是要隔離嗎?讓你一個容器里的東西看到宿主機的文件系統,還要讀寫之,你就不要隔離嘛,設設cgroup就行了。然后,我又和他科普了一下cgroup是什么玩意。
接下來,他說他希望兩個docker通信,我說,可以啊,你就想像成兩個機器間通訊就好了。他說,不行,應該通過宿主機的文件系統。我說,好吧,但是你不能假設這兩個docker容器會在同一臺物理機上。他說他就是這個場景,問我docker能不能干,我說能干是能干,但這樣不好。于是又和他解釋一番為什么集群調度在docker上會更有效。
然后,他問我docker是怎么執行image的,于是我又科普了一下 registry和docker daemon的東西。他說,為什么要registry和dockerfile呢。為什么不直接在base image里直接配置呢?我有點煩了(老實說,我早點有點煩了),我說,你可以是可以,但不要這么做,這就像生產環境一樣,你不能在生產線上直接改代碼或是環境,因為這樣無法跟蹤你的變更的。最好的方式,是通過一個可跟蹤可維護的構建過程來構建環境。這就是dockerfile的目的。
于是,他說,這問題不就來了?docker那么大的鏡像文件,都從服務器上pull下來,那不搞死了?我說,docker的文件系統是分層次的,也就是說,你pull下來的是增量的。而且有第一個人pull下來了,后面的就不用了。
這里他不是很能理解,于是我又回到開頭和他再一次科普了一下什么是UnionFS。
這個時候,我實在是受不了了,我說,你要不讀讀官方的readme吧,如果你英文閱讀有問題的話,你可以看看中文社區的文章,雖然非常少,但也能滿足你了。
我的耐煩讓他有點不爽,于是,他說,他讀英文比讀中文更通暢,而且有8年的分布式系統的經驗。
于是,我說,那再好不過了,那就多讀readme吧,當然,先把Unix/Linux的入門知識補充一下,要不要我推薦幾本書?另外,最好自己裝個Linux/Docker自己玩一下,什么都清楚了。
結果,他來一句——“你要知道,我沒時間讀書和裝個linux玩docker!”
我怒了,我說:“尼瑪,你什么邏輯?你沒時間,我憑什么就有時間當你的私人家教?你自己不花時間去看書,去學習,特么來消耗別人的時間,還讓我加班教你,你多大的人啦?你特么好意思么?”
于是,他就這樣被我罵走了……
來自:http://weibo.com/p/1001603796313023084296