天天看點

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容器上的應用程式。