Docker五大優點:持續集成、版本控制、可移植性、隔離性和安全性

 

隨着Docker技術的不斷成熟,愈來愈多的企業開始考慮使用Docker。Docker有不少的優點,本文主要講述了Docker的五個最重要優點,即持續集成、版本控制、可移植性、隔離性和安全性。

對於Docker,應該不須要進行詳細的介紹了。它是最火熱的開源項目之一,經過在容器中增長一個抽象層(a layer of abstraction),就能夠將應用程序部署到容器中。在看似穩定而成熟的場景下,使用Docker的好處愈來愈多。在這篇文章中,我不談論Docker是什麼或者Docker是怎麼工做的,取而代之,我會提出使用這個不斷成長的平臺的五大好處。java

持續部署與測試

Docker在開發與運維的世界中具備極大的吸引力,由於它能保持跨環境的一致性。在開發與發佈的生命週期中,不一樣的環境具備細微的不一樣,這些差別多是因爲不一樣安裝包的版本和依賴關係引發的。然而,Docker能夠經過確保從開發到產品發佈整個過程環境的一致性來解決這個問題*Docker容器經過相關配置,保持容器內部全部的配置和依賴關係始終不變。最終,你能夠在開發到產品發佈的整個過程當中使用相同的容器來確保沒有任何差別或者人工干預。

使用Docker,你還能夠確保開發者不須要配置徹底相同的產品環境,他們能夠在他們本身的系統上經過VirtualBox創建虛擬機來運行Docker容器。Docker的魅力在於它一樣可讓你在亞馬遜EC2實例上運行相同的容器。若是你須要在一個產品發佈週期中完成一次升級,你能夠很容易地將須要變動的東西放到Docker容器中,測試它們,而且使你已經存在的容器執行相同的變動。這種靈活性就是使用Docker的一個主要好處。和標準部署與集成過程同樣,Docker可讓你構建、測試和發佈鏡像,這個鏡像能夠跨多個服務器進行部署。哪怕安裝一個新的安全補丁,整個過程也是同樣的。你能夠安裝補丁,而後測試它,而且將這個補丁發佈到產品中。node

多雲平臺

Docker最大的好處之一就是可移植性。在過去的幾年裏,全部主流的雲計算提供商,包括亞馬遜AWS和谷歌的GCP,都將Docker融入到他們的平臺並增長了各自的支持。Docker容器能運行在亞馬遜的EC2實例、谷歌的GCP實例、Rackspace服務器或者VirtualBox這些提供主機操做系統的平臺上。舉例來講,若是運行在亞馬遜EC2實例上的Docker容器可以很容易地移植到其餘幾個平臺上,好比說VirtualBox,而且達到相似的一致性和功能性,那這將容許你從基礎設施層中抽象出來。除了AWS和GCP,Docker在其餘不一樣的IaaS提供商也運行的很是好,例如微軟的Azure、OpenStack和能夠被具備不一樣配置的管理者所使用的Chef、Puppet、Ansible等。git

環境標準化和版本控制

經過上面的討論,Docker容器能夠在不一樣的開發與產品發佈生命週期中確保一致性,進而標準化你的環境。除此以外,Docker容器還能夠像git倉庫同樣,可讓你提交變動到Docker鏡像中並經過不一樣的版原本管理它們。設想若是你由於完成了一個組件的升級而致使你整個環境都損壞了,Docker可讓你輕鬆地回滾到這個鏡像的前一個版本。這整個過程能夠在幾分鐘內完成,若是和虛擬機的備份或者鏡像建立流程對比,那Docker算至關快的,它可讓你快速地進行復制和實現冗餘。此外,啓動Docker就和運行一個進程同樣快。docker

隔離性

Docker能夠確保你的應用程序與資源是分隔開的。幾個月前,Gartner發表了一篇報告,這份報告說明了運行Docker 容器進行資源隔離的效果和虛擬機(VM)管理程序同樣的好,可是管理與控制方面還須要進行完善。

咱們考慮這樣一個場景,你在你的虛擬機中運行了不少應用程序,這些應用程序包括團隊協做軟件(例如Confluence)、問題追蹤軟件(例如JIRA)、集中身份管理系統(例如Crowd)等等。因爲這些軟件運行在不一樣的端口上,因此你必須使用Apache或者Nginx來作反向代理。到目前爲止,一切都很正常,可是隨着你的環境向前推動,你須要在你現有的環境中配置一個內容管理系統(例如Alfresco)。這時候有個問題發生了,這個軟件須要一個不一樣版本的Apache Tomcat,爲了知足這個需求,你只能將你現有的軟件遷移到另外一個版本的Tomcat上,或者找到適合你現有Tomcat的內容管理系統(Alfresco)版本。

對於上述場景,使用Docker就不用作這些事情了。Docker可以確保每一個容器都擁有本身的資源,而且和其餘容器是隔離的。你能夠用不一樣的容器來運行使用不一樣堆棧的應用程序。除此以外,若是你想在服務器上直接刪除一些應用程序是比較困難的,由於這樣可能引起依賴關係衝突。而Docker能夠幫你確保應用程序被徹底清除,由於不一樣的應用程序運行在不一樣的容器上,若是你不在須要一款應用程序,那你能夠簡單地經過刪除容器來刪除這個應用程序,而且在你的宿主機操做系統上不會留下任何的臨時文件或者配置文件。

除了上述好處,Docker還能確保每一個應用程序只使用分配給它的資源(包括CPU、內存和磁盤空間)。一個特殊的軟件將不會使用你所有的可用資源,要否則這將致使性能下降,甚至讓其餘應用程序徹底中止工做。安全

安全性

如上所述,Gartner也認可Docker正在快速地發展。從安全角度來看,Docker確保運行在容器中的應用程序和其餘容器中的應用程序是徹底分隔與隔離的,在通訊流量和管理上賦予你徹底的控制權。Docker容器不能窺視運行在其餘容器中的進程。從體系結構角度來看,每一個容器只使用着本身的資源(從進程到網絡堆棧)。

做爲緊固安全的一種手段,Docker將宿主機操做系統上的敏感掛載點(例如/proc和/sys)做爲只讀掛載點,而且使用一種寫時複製系統來確保容器不能讀取其餘容器的數據。Docker也限制了宿主機操做系統上的一些系統調用,而且和SELinux與AppArmor一塊兒運行的很好。此外,在Docker Hub上可使用的Docker鏡像都經過數字簽名來確保其可靠性。因爲Docker容器是隔離的,而且資源是受限制的,因此即便你其中一個應用程序被黑,也不會影響運行在其它Docker容器上的應用程序。服務器

結語

將雲計算一塊兒考慮,上面提到的這些好處可以清楚地證實Docker是一個有效的開源平臺。使用Docker的好處愈來愈多,今天我只想強調這前五大好處。若是你使用了Docker,歡迎分享你的使用案例或者任何你以爲使用Docker帶來的好處。

原文連接:5 Key Benefits of Docker: CI, Version Control, Portability, Isolation and Security(翻譯:肖遠昊 校對:魏小紅)網絡

 

轉載:http://dockone.io/article/389運維

相關文章
相關標籤/搜索