Docker五個主要好處:持續集成、版本控制、可移植性、隔離性和安全性

jopen 9年前發布 | 24K 次閱讀 Docker

原文  http://dockone.io/article/389

【編者的話】原文請點擊 here ,作者是 OFIR NACHMANI 。本文主要講述了Dokcer五個主要的好處,即持續集成、版本控制、可移植性、隔離性和安全性。

對于Docker,應該不需要進行詳細的介紹了。它是最火熱的開源項目之一,通過在容器中增加一層抽象,可以讓你將應用程序部署到容器中。在看 似穩定而成熟的情形下,使用Docker的好處越來越多。在這篇文章中,我不談論Docker是什么或者Docker是怎么工作的,取而代之,我將給出使 用這個不斷成長的平臺的前五個最大好處。

持續部署與測試

Docker在 開發與運維 的世界中具有極大的吸引力,因為它能保持跨環境的一致性。在開發與發布的生命周期中,不同的環境具有細微的不同,除非你的私有環境倉庫在合適的地方具有緊 密的檢查,這些不同可能是由于不同安裝包的版本和依賴關系引起的。然而,Docker可以通過確保從開發到產品發布整個過程環境的一致來解決這個差距,主 要是在Docker容器內部進行配置來維護所有的配置和依賴關系。最終,你可以在開發到產品發布的整個過程中使用相同的容器來確保沒有任何差異或者人工干 預。

使用Docker,你還可以確保開發者不需要配置完全相同的產品環境,因為你可以在他們自己的系統上通過VirtualBox建立虛擬機來運行Docker容器。 Docker 的魅力在于它同樣可以讓你在亞馬遜 EC2 實例上運行相同的容器。如果你需要在一個產品發布周期中完成一次升級,你可以很容易地將需要變更的東西放到Docker容器中,測試它們,并且使你已經存 在的容器執行相同的變更。這種靈活性就是使用Docker的一個主要好處。和標準部署與集成過程一樣,Docker可以讓你構建、測試和發布可以跨多服務 端部署的鏡像。即使現在有個安全補丁可以用了,你還是可以使用相同的流程,使用這個補丁,測試它并且將它發布到你的產品中。

多云平臺

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

環境標準化和版本控制

通過上面的討論,Docker容器可以在不同的開發與產品發布生命周期中確保一致性,進而標準化你的環境。除此之外,Docker容器還可以像 git倉庫一樣,可以讓你提交變更到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帶來的好處。

</div>

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