文章出處

Docker能解決什么問題呢?
一個工具的出現必然需要解決一些問題,Docker也不例外,簡單說說我們常見的2種情況Docker是如何解決的吧。
1、程序在我這跑得好好的,在你那怎么就不行呢?!
這是一個典型的應用場景,作為程序員別說沒有遇到過這個問題。Docker image(鏡像)中不僅包含了代碼,也包含了程序運行時所需的所有依賴。比如java的程序,肯定要在image中包含jdk;比如Python的程序,肯定要在image中包含對應版本的Python解釋器。程序在我這跑得好好的,去你那就不行了,這顯然是環境問題,Docker把整個運行時環境打包放到image中,所以搞定了環境依賴問題!
這點很重要么?真的很重要!我們知道,一個程序要跑起來,需要這么幾部分:代碼 + 運行環境 + 配置 + 依賴的服務。代碼當然就是同一份代碼,不同的環境都一樣,通常不會有問題。但是問題的關鍵就在于環境和配置,不同的環境、不同的配置,同樣的代碼就不一定能按部就班的跑起來了。Docker image中包含了運行環境+配置,既能夠確保環境和配置的統一,也能夠方便快速的部署。
所以總結起來就是:Docker解決了運行環境和配置問題,方便發布,也就方便做持續集成。
2、系統好卡,肯定是又有哪個哥們的程序在作孽了
現在的服務器都牛的很,動不動128G內存,24個CPU,Linux本身就是個多租戶的操作系統,可以多人共用,但是如果某個程序狂吃內存和CPU,占用了太多系統資源,這就會影響其他程序的運行。
一個公司的幾個同事共用一臺機器出現這種問題可以通過內部協調溝通解決。但是云主機提供商呢?不同的用戶之間不認識,共用一臺強大的計算機,結果某個程序耗盡了資源,用戶肯定不樂意了。所以虛擬機出現了,良好了做了資源隔離,不同用戶之間彼此老死不相往來,不會相互影響,世界一下子清靜了。但是,虛擬機有缺點:創建速度慢,遷移起來麻煩,因為中間加了一層guest os,有了性能損耗,一個牛逼的機器也就創建十幾個虛擬機,太浪費了...
相對虛擬機的重量級虛擬化方案,Linux內核級的一些隔離方案讓人們看到了希望,cgroups、namespace、tc、quota、chroot、lxc。終于,Docker出現了,Docker利用這些成熟的技術,讓虛擬化變得輕量了起來,創建一個container瞬間完成,秒級!cpu指令集不再被翻譯執行,性能損耗非常少,雖說隔離性沒有虛擬機那么徹底,安全性上稍差一些,但也基本可以用,不用太擔心~
所以總結起來就是:更輕量的虛擬化,節省了虛擬機的性能損耗。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()