如日中天的Docker解決了什么問題?
這段時(shí)間Docker實(shí)在是如日中天,到處都是它的信息,你認(rèn)為它解決了什么問題?有哪些應(yīng)用場景?
這個(gè)問題顯然沒有標(biāo)準(zhǔn)答案,面試官只是想看看你是否有自己的想法,是否對新技術(shù)保持敏感,如果你的觀點(diǎn)跟面試官不謀而合,絕對加分?。海?/p>
下面都是筆者個(gè)人看法,輕拍~
1、程序在我這跑得好好的,在你那怎么就不行呢?!
這是一個(gè)典型的應(yīng)用場景,Docker image中包含了程序需要的所有的運(yùn)行時(shí)依賴,比如java的程序,肯定要在image中包含jdk;比如Python的程序,肯定要在image中包含對應(yīng)版本的Python解釋器。程序在我這跑得好好的,去你那就不行了,顯然是環(huán)境問題。Docker把整個(gè)運(yùn)行時(shí)環(huán)境打包放到image中,所以搞定了環(huán)境依賴問題!
這點(diǎn)很重要么?真的很重要!如果你做過部署或發(fā)布系統(tǒng)將會(huì)對此感觸頗深。
我們知道,一個(gè)程序要跑起來,需要這么幾部分:代碼 + 運(yùn)行環(huán)境 + 配置 + 依賴的服務(wù)。代碼當(dāng)然就是同一份代碼,不同的環(huán)境都一樣,通常不會(huì)有問題,Docker image中包含了運(yùn)行環(huán)境+配置,這對部署相當(dāng)友好。如果你沒有做過這種系統(tǒng)(其實(shí)大部分人都沒有做過啦),但是你肯定裝過軟件,裝一些復(fù)雜的軟件的時(shí)候有沒有因?yàn)榘姹疽蕾嚮蛘呔幾g參數(shù)等讓你抓狂?用了Docker再也沒有這種問題了:
- docker pull xxx;
- docker run xxx;
- done:)
所以總結(jié)起來就是:Docker解決了運(yùn)行環(huán)境和配置問題,方便發(fā)布,也就方便做持續(xù)集成。
2、系統(tǒng)好卡,肯定是又有哪個(gè)哥們的程序在作孽了
現(xiàn)在的服務(wù)器都牛的很,動(dòng)不動(dòng)128G內(nèi)存,24個(gè)CPU,Linux本身就是個(gè)多租戶的操作系統(tǒng),可以多人共用,但是如果某個(gè)程序狂吃內(nèi)存和CPU,占用了太多系統(tǒng)資源,這就會(huì)影響其他程序的運(yùn)行。
一個(gè)公司的幾個(gè)同事共用一臺(tái)機(jī)器出現(xiàn)這種問題可以通過內(nèi)部協(xié)調(diào)溝通解決。但是云主機(jī)提供商呢?不同的用戶之間不認(rèn)識,共用一臺(tái)強(qiáng)大的計(jì)算機(jī),結(jié)果某個(gè)程序耗盡了資源,用戶肯定不樂意了。
所以虛擬機(jī)出現(xiàn)了,良好了做了資源隔離,不同用戶之間彼此老死不相往來,不會(huì)相互影響,世界一下子清靜了。但是,虛擬機(jī)有缺點(diǎn):創(chuàng)建速度慢,遷移起來麻煩,因?yàn)橹虚g加了一層guest os,有了性能損耗,一個(gè)牛逼的機(jī)器也就創(chuàng)建十幾個(gè)虛擬機(jī),太浪費(fèi)了……
相對虛擬機(jī)的重量級虛擬化方案,Linux內(nèi)核級的一些隔離方案讓人們看到了希望,cgroups、namespace、tc、quota、chroot、lxc,終于,Docker出現(xiàn)了,Docker利用這些成熟的技術(shù),讓虛擬化變得輕量了起來,創(chuàng)建一個(gè)container瞬間完成,秒級!cpu指令集不再被翻譯執(zhí)行,性能損耗非常少,雖說隔離性沒有虛擬機(jī)那么徹底,安全性上稍差一些,但也基本可以用,不用太擔(dān)心:)
所以總結(jié)起來就是:更輕量的虛擬化,節(jié)省了虛擬機(jī)的性能損耗
上面兩點(diǎn)是Docker解決的問題,那它有哪些應(yīng)用場景呢?
其實(shí)從上面的描述中也基本可以窺其一二了
1、程序分發(fā),gitlab的安裝很惡心吧,所以有人做了gitlab的image
2、部署發(fā)布,這點(diǎn)對運(yùn)維的同學(xué)很有幫助
3、PaaS,tsuru、flynn都是基于Docker的,CloudFoundry也要從warden遷移到Docker,不解釋
偶爾跟面試官侃點(diǎn)高大上的話題,驚死他!O(∩_∩)O哈哈~ 本文來自微信公眾號:【it面試題】it_mianshiti






