Docker解決了什么問題?

jopen 10年前發布 | 14K 次閱讀 Docker

這段時間Docker實在是如日中天,到處都是它的信息,你認為它解決了什么問題?有哪些應用場景?

這個問題顯然沒有標準答案,面試官只是想看看你是否有自己的想法,是否對新技術保持敏感,如果你的觀點跟面試官不謀而合,絕對加分啊:)

下面都是筆者個人看法,輕拍~

1、程序在我這跑得好好的,在你那怎么就不行呢?!
這是一個典型的應用場景,Docker image中包含了程序需要的所有的運行時依賴,比如java的程序,肯定要在image中包含jdk;比如Python的程序,肯定要在image中包 含對應版本的Python解釋器。程序在我這跑得好好的,去你那就不行了,顯然是環境問題。Docker把整個運行時環境打包放到image中,所以搞定了環境依賴問題

這點很重要么?真的很重要!如果你做過部署或發布系統將會對此感觸頗深。

我們知道,一個程序要跑起來,需要這么幾部分:代碼 + 運行環境 + 配置 + 依賴的服務。代碼當然就是同一份代碼,不同的環境都一樣,通常不會有問題,Docker image中包含了運行環境+配置,這對部署相當友好。如果你沒有做過這種系統(其實大部分人都沒有做過啦),但是你肯定裝過軟件,裝一些復雜的軟件的時候有沒有因為版本依賴或者編譯參數等讓你抓狂?用了Docker再也沒有這種問題了:

docker pull xxx; 
docker run xxx; 
done:)

所以總結起來就是:Docker解決了運行環境和配置問題,方便發布,也就方便做持續集成

2、系統好卡,肯定是又有哪個哥們的程序在作孽了
現在的服務器都牛的很,動不動128G內存,24個CPU,Linux本身就是個多租戶的操作系統,可以多人共用,但是如果某個程序狂吃內存和CPU,占用了太多系統資源,這就會影響其他程序的運行。

一個公司的幾個同事共用一臺機器出現這種問題可以通過內部協調溝通解決。但是云主機提供商呢?不同的用戶之間不認識,共用一臺強大的計算機,結果某個程序耗盡了資源,用戶肯定不樂意了。

所以虛擬機出現了,良好了做了資源隔離,不同用戶之間彼此老死不相往來,不會相互影響,世界一下子清靜了。但是,虛擬機有缺點:創建速度慢,遷移起來麻煩,因為中間加了一層guest os,有了性能損耗,一個牛逼的機器也就創建十幾個虛擬機,太浪費了……

相對虛擬機的重量級虛擬化方案,Linux內核級的一些隔離方案讓人們看到了希望,cgroups、namespace、tc、quota、 chroot、lxc,終于,Docker出現了,Docker利用這些成熟的技術,讓虛擬化變得輕量了起來,創建一個container瞬間完成,秒 級!cpu指令集不再被翻譯執行,性能損耗非常少,雖說隔離性沒有虛擬機那么徹底,安全性上稍差一些,但也基本可以用,不用太擔心:)

所以總結起來就是:更輕量的虛擬化,節省了虛擬機的性能損耗

上面兩點是Docker解決的問題,那它有哪些應用場景呢?

其實從上面的描述中也基本可以窺其一二了

  • 1、程序分發,gitlab的安裝很惡心吧,所以有人做了gitlab的image
  • 2、部署發布,這點對運維的同學很有幫助
  • 3、PaaS,tsuru、flynn都是基于Docker的,CloudFoundry也要從warden遷移到Docker,不解釋

偶爾跟面試官侃點高大上的話題,驚死他!O(∩_∩)O哈哈~ 本文來自微信公眾號:【it面試題】it_mianshiti

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!