03.08 項目為什麼用docker?

xiaoai2011


Docker可以將複雜的應用程序運行環境部署打包,這樣就避免開發人員或者運維人員反覆部署相同的應用程序運行環境。在如今雲計算盛行的情況下,分佈式應用和管理變得簡單了。基本上雲計算服務平臺都提供了現成的群集計算服務,這些群集服務無一例外都是基於docker鏡像構建的。群集應用的要求就是每個節點的應用程序版本以及環境要一致,一個docker鏡像就是一個虛擬主機,只要放到容器中即可實現單機獨立運行的效果,大大簡化了分佈式群集應用的實現過程


微捷Kevin


Docker

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

Docker特性

  • Automating the packaging and deployment of applications(使應用的打包與部署自動化)
  • Creation of lightweight, private PAAS environments(創建輕量、私密的PAAS環境)
  • Automated testing and continuous integration/deployment(實現自動化測試和持續的集成/部署)
  • Deploying and scaling web apps, databases and backend services(部署與擴展webapp、數據庫和後臺服務)

Docker解決的問題

  • 應用更新發布及部署低效

雲計算、大數據,移動技術的快速發展,加之企業業務需求的不斷變化,導致企業架構要隨時更改以適合業務需求,跟上技術更新的步伐。毫無疑問,這些重擔都將壓在企業開發人員身上;團隊之間如何高效協調,快速交付產品,快速部署應用,以及滿足企業業務需求,是開發人員亟需解決的問題。Docker技術恰好可以幫助開發人員解決這些問題。

  • 環境一致性難以保證

為了解決開發人員和運維人員之間的協作關係,加快應用交付速度,越來越多的企業引入了DevOps這一概念。但是,傳統的開發過程中,開發、測試、運維是三個獨立運作的團隊,團隊之間溝通不暢,開發運維之間衝突時有發生,導致協作效率低下,產品交付延遲, 影響了企業的業務運行。Docker技術將應用以集裝箱的方式打包交付,使應用在不同的團隊中共享,通過鏡像的方式應用可以部署於任何環境中。這樣避免了各團隊之間的協作問題的出現,成為企業實現DevOps目標的重要工具。以容器方式交付的Docker技術支持不斷地開發迭代,大大提升了產品開發和交付速度。

  • 不同環境遷移成本高

此外,與通過Hypervisor把底層設備虛擬化的虛擬機不同,Docker直接移植於Linux內核之上,通過運行Linux進程將底層設備虛擬隔離,這樣系統性能的損耗也要比虛擬機低的多,幾乎可以忽略。同時,Docker應用容器的啟停非常高效,可以支持大規模的分佈系統的水平擴展,真正給企業開發帶來福音。

Docker很大程度上解決了上述問題,提高開發和運維的工作效率,提高企業的工作效率。

Docker的未來

任何一項新技術的出現,都需要一個發展過程,比如雲計算為企業所接受用了將近五年左右時間,OpenStack技術也經歷了兩、三年才受到人們的認可。因此,雖然Docker技術發展很快,但技術還不夠成熟,對存儲的靈活的支持、網絡的開銷和兼容性方面還存在限制,這是Docker沒有被企業大範圍使用的一個主要原因。另外一個原因是企業文化是否與DevOps運動一致,只有企業支持DevOps,才能更大地發揮Docker的價值。最後一個原因就是安全性問題,Docker對於Linux這一層的安全的隔離還有待改進,才能進一步得到企業的認可。


謝大大偉


我可以舉幾個例子,就可理解為什麼要用docker?

隔離性

用傳統的方式上線一個WEB項目,我們的一般做法是在線上服務器中,安裝WEB服務器,然後裝好數據庫,裝好其他需要的軟件最後把本地己打包好的代碼上傳至服務器,然後重啟就好了。

如果一臺服務器上要部署多個項目,每個項目之間無論是在資源的使用,還是之間的衝突。都會讓人崩潰。更別提有不同的開發語言和開發團隊。

現在我們有docker ,可以用docker把應用直接打包封裝到一個容器中。容器之間有著進程之間的隔離,在容器中操作不會影響到其他容器的使用。

可移植性

以前開發一套應用,必須開發機上安裝環境,測試機上安裝環境,然後部署的服務器上安裝環境,而且由於使用的機器不是同樣的操作系統,所以有時會出現在本機上沒問題,測試時有出問題,甚至開發測試都沒問題,一上線就BUG滿滿。估計大家遇到過與測試之間撕B的場景。

用上docker,無論是在開發機,測試機,生產環境以容器運行,使應用在三種環境下保持一致。

高效輕量

對比虛擬機,docker佔用資源更小。而且可以提高服務器的資源利用率。


李老師tome


一個非常好的問題,我是工作多年的Web應用架構師,來回答一下這個問題。歡迎關注我,瞭解更多IT專業知識。


回答之前,先反問一個問題:為什麼不用Docker呢?


Docker出現之前,有現在還在用的VMWare虛擬機,有Ghost,部分解決了服務器安裝配置的瑣碎工作,但是沒有解決運行環境的問題。比如常見的環境不一致的問題:開發環境能運行,測試生產環境有bug?還有就是每次新服務器、新環境搭建時無窮無盡的問題。


那麼Docker出現後,整個環境被打包起來,也就是將所有安裝配置代碼化自動化了,結合資源編排和雲服務,可以秒啟一個集群化的web服務系統,如果沒有容器技術是做不到的。Docker是使用最普遍的容器技術,事實上的容器技術標準。


推薦看一個Docker秒啟Web服務的視頻:

\n

{!-- PGC_VIDEO:{"thumb_height": 360, "vposter": "http://p0.pstatp.com/origin/tos-cn-i-0022/82dfbd6add7343d88072bfc04a4e6892\

Web應用架構師


當服務器運行多個應用程序時,為了防止應用程序之間所需的環境依賴產生衝突或誤操作影響,所以需要做好隔離,最大限度利用服務器資源環境,docker就把它變成了一個個沙盒。沙盒與沙盒之間互不影響


Java高級工程師小宇


這是一個容器,為了防止一個項目的程序運行異常影響其他項目程序的正常運行,可以理解為隔離不同項目的程序,簡單來說類似於一個虛擬的盒子或系統,裡面運行獨立的項目程序,共享系統底層資源。


分享到:


相關文章: